<?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>170007</bug_id>
          
          <creation_ts>2017-03-23 07:36:39 -0700</creation_ts>
          <short_desc>[DFG][FTL] Efficiently execute number#toString()</short_desc>
          <delta_ts>2018-02-06 23:59:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>182213</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>buildbot</cc>
    
    <cc>darin</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rniwa</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1290439</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-23 07:36:39 -0700</bug_when>
    <thetext>[JSC] Add strength reduction for NumberToStringWithRadix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1290440</commentid>
    <comment_count>1</comment_count>
      <attachid>305193</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-03-23 07:37:00 -0700</bug_when>
    <thetext>Created attachment 305193
Patch

WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344923</commentid>
    <comment_count>2</comment_count>
      <attachid>319759</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-02 21:28:11 -0700</bug_when>
    <thetext>Created attachment 319759
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344924</commentid>
    <comment_count>3</comment_count>
      <attachid>319760</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-02 21:29:16 -0700</bug_when>
    <thetext>Created attachment 319760
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1344950</commentid>
    <comment_count>4</comment_count>
      <attachid>319769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-03 03:06:52 -0700</bug_when>
    <thetext>Created attachment 319769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345077</commentid>
    <comment_count>5</comment_count>
      <attachid>319769</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-09-03 16:24:21 -0700</bug_when>
    <thetext>Comment on attachment 319769
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGNode.h:698
&gt; +        ASSERT(radix &gt;= 2 &amp;&amp; radix &lt;= 36);

General WebKit style comment:

We write two asserts instead of one assert with an &amp;&amp;, that way we know which of the two failed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345253</commentid>
    <comment_count>6</comment_count>
      <attachid>319769</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2017-09-04 14:07:00 -0700</bug_when>
    <thetext>Comment on attachment 319769
Patch

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

r=me with some comments.

&gt; Source/JavaScriptCore/ChangeLog:9
&gt; +        However, our IC only cares cells. If the base value is a number, it always goes to the slow path.

Typo: cares =&gt; cares about.

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        conservatively use read(World)/write(Heap). But in reality, `number.toString` is well called with the constant

Maybe &quot;`number.toString` is well called&quot; could be &quot;`number.toString` is mostly called&quot;?

&gt; Source/JavaScriptCore/ChangeLog:31
&gt; +        number-to-string-with-radix-cse           43.8312+-1.3017     ^      7.4930+-0.5105        ^ definitely 5.8496x faster
&gt; +        number-to-string-with-radix-10             7.2775+-0.5225     ^      2.1906+-0.1864        ^ definitely 3.3222x faster
&gt; +        number-to-string-with-radix               39.7378+-1.4921     ^     16.6137+-0.7776        ^ definitely 2.3919x faster
&gt; +        number-to-string-strength-reduction       94.9667+-2.7157     ^      9.3060+-0.7202        ^ definitely 10.2049x faster

Nice!

&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1956
&gt; +            if (radix &gt;= 2 &amp;&amp; radix &lt;= 36) {

Nit: I prefer to have my range checking code as &quot;if (2 &lt;= radix &amp;&amp; radix &lt;= 36)&quot; since that makes it slightly easier to read that radix is between 2 and 36.

&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.h:698
&gt;&gt; +        ASSERT(radix &gt;= 2 &amp;&amp; radix &lt;= 36);
&gt; 
&gt; General WebKit style comment:
&gt; 
&gt; We write two asserts instead of one assert with an &amp;&amp;, that way we know which of the two failed.

Interesting, I usually use one assert for range checking assertions since it feels like the assertions take up a lot of space otherwise. I also rarely care about which way the assertion fails since it could usually fail the other way just as easily.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345304</commentid>
    <comment_count>7</comment_count>
      <attachid>319769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 20:01:50 -0700</bug_when>
    <thetext>Comment on attachment 319769
Patch

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

Thanks for your reviews!

&gt;&gt; Source/JavaScriptCore/ChangeLog:9
&gt;&gt; +        However, our IC only cares cells. If the base value is a number, it always goes to the slow path.
&gt; 
&gt; Typo: cares =&gt; cares about.

Fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:19
&gt;&gt; +        conservatively use read(World)/write(Heap). But in reality, `number.toString` is well called with the constant
&gt; 
&gt; Maybe &quot;`number.toString` is well called&quot; could be &quot;`number.toString` is mostly called&quot;?

Oops, fixed.

&gt;&gt; Source/JavaScriptCore/ChangeLog:31
&gt;&gt; +        number-to-string-strength-reduction       94.9667+-2.7157     ^      9.3060+-0.7202        ^ definitely 10.2049x faster
&gt; 
&gt; Nice!

:D

&gt;&gt; Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h:1956
&gt;&gt; +            if (radix &gt;= 2 &amp;&amp; radix &lt;= 36) {
&gt; 
&gt; Nit: I prefer to have my range checking code as &quot;if (2 &lt;= radix &amp;&amp; radix &lt;= 36)&quot; since that makes it slightly easier to read that radix is between 2 and 36.

Looks very nice. Fixed.

&gt;&gt;&gt; Source/JavaScriptCore/dfg/DFGNode.h:698
&gt;&gt;&gt; +        ASSERT(radix &gt;= 2 &amp;&amp; radix &lt;= 36);
&gt;&gt; 
&gt;&gt; General WebKit style comment:
&gt;&gt; 
&gt;&gt; We write two asserts instead of one assert with an &amp;&amp;, that way we know which of the two failed.
&gt; 
&gt; Interesting, I usually use one assert for range checking assertions since it feels like the assertions take up a lot of space otherwise. I also rarely care about which way the assertion fails since it could usually fail the other way just as easily.

I think `ASSERT(2 &lt;= radix &amp;&amp; radix &lt;= 36);` is nice (a bit tweaked version of the assertion). This assert would like to check the radix value is in range of [2, 36]. So, this is readable I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345305</commentid>
    <comment_count>8</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-04 20:03:17 -0700</bug_when>
    <thetext>Committed r221601: &lt;http://trac.webkit.org/changeset/221601&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1345403</commentid>
    <comment_count>9</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2017-09-05 04:25:43 -0700</bug_when>
    <thetext>https://perf.webkit.org/v3/#/charts?since=1504003447301&amp;paneList=((18-906)) Wow! It improves Speedometer 2.0 React-Redux 12%.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1349056</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-09-14 15:49:19 -0700</bug_when>
    <thetext>This bug or https://bugs.webkit.org/show_bug.cgi?id=176222 may have regressed ARES-6 by 3%. Can you look into it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353698</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 12:52:13 -0700</bug_when>
    <thetext>&lt;rdar://problem/34694176&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393674</commentid>
    <comment_count>12</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2018-01-26 14:26:01 -0800</bug_when>
    <thetext>Hmm, it looks like this breaks twitch.tv chat.

Do you have time to look into this Yusuke?

I think you can reproduce this by doing:
1. Navigate to a Twitch channel with numerous viewers and an active chat (e.g. 15,000+ viewers).
2. Spam scroll up and down at the bottom of the chat view and the layout will typically break within a minute.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393834</commentid>
    <comment_count>13</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 01:46:10 -0800</bug_when>
    <thetext>(In reply to Keith Miller from comment #12)
&gt; Hmm, it looks like this breaks twitch.tv chat.
&gt; 
&gt; Do you have time to look into this Yusuke?
&gt; 
&gt; I think you can reproduce this by doing:
&gt; 1. Navigate to a Twitch channel with numerous viewers and an active chat
&gt; (e.g. 15,000+ viewers).
&gt; 2. Spam scroll up and down at the bottom of the chat view and the layout
&gt; will typically break within a minute.

I&apos;ll check it. I cannot reproduce it with Epiphany.
I&apos;ll open it in STP and check the behavior.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393841</commentid>
    <comment_count>14</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 04:24:18 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #13)
&gt; (In reply to Keith Miller from comment #12)
&gt; &gt; Hmm, it looks like this breaks twitch.tv chat.
&gt; &gt; 
&gt; &gt; Do you have time to look into this Yusuke?
&gt; &gt; 
&gt; &gt; I think you can reproduce this by doing:
&gt; &gt; 1. Navigate to a Twitch channel with numerous viewers and an active chat
&gt; &gt; (e.g. 15,000+ viewers).
&gt; &gt; 2. Spam scroll up and down at the bottom of the chat view and the layout
&gt; &gt; will typically break within a minute.
&gt; 
&gt; I&apos;ll check it. I cannot reproduce it with Epiphany.
&gt; I&apos;ll open it in STP and check the behavior.

I reproduced it with STP 47. I can&apos;t reproduce it with Debug build Minibrowser yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393842</commentid>
    <comment_count>15</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 04:24:54 -0800</bug_when>
    <thetext>O(In reply to Yusuke Suzuki from comment #14)
&gt; (In reply to Yusuke Suzuki from comment #13)
&gt; &gt; (In reply to Keith Miller from comment #12)
&gt; &gt; &gt; Hmm, it looks like this breaks twitch.tv chat.
&gt; &gt; &gt; 
&gt; &gt; &gt; Do you have time to look into this Yusuke?
&gt; &gt; &gt; 
&gt; &gt; &gt; I think you can reproduce this by doing:
&gt; &gt; &gt; 1. Navigate to a Twitch channel with numerous viewers and an active chat
&gt; &gt; &gt; (e.g. 15,000+ viewers).
&gt; &gt; &gt; 2. Spam scroll up and down at the bottom of the chat view and the layout
&gt; &gt; &gt; will typically break within a minute.
&gt; &gt; 
&gt; &gt; I&apos;ll check it. I cannot reproduce it with Epiphany.
&gt; &gt; I&apos;ll open it in STP and check the behavior.
&gt; 
&gt; I reproduced it with STP 47. I can&apos;t reproduce it with Debug build
&gt; Minibrowser yet.

OK, I&apos;ve reproduced it with Debug build Minibrowser too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393843</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 04:48:06 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #15)
&gt; O(In reply to Yusuke Suzuki from comment #14)
&gt; &gt; (In reply to Yusuke Suzuki from comment #13)
&gt; &gt; &gt; (In reply to Keith Miller from comment #12)
&gt; &gt; &gt; &gt; Hmm, it looks like this breaks twitch.tv chat.
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; Do you have time to look into this Yusuke?
&gt; &gt; &gt; &gt; 
&gt; &gt; &gt; &gt; I think you can reproduce this by doing:
&gt; &gt; &gt; &gt; 1. Navigate to a Twitch channel with numerous viewers and an active chat
&gt; &gt; &gt; &gt; (e.g. 15,000+ viewers).
&gt; &gt; &gt; &gt; 2. Spam scroll up and down at the bottom of the chat view and the layout
&gt; &gt; &gt; &gt; will typically break within a minute.
&gt; &gt; &gt; 
&gt; &gt; &gt; I&apos;ll check it. I cannot reproduce it with Epiphany.
&gt; &gt; &gt; I&apos;ll open it in STP and check the behavior.
&gt; &gt; 
&gt; &gt; I reproduced it with STP 47. I can&apos;t reproduce it with Debug build
&gt; &gt; Minibrowser yet.
&gt; 
&gt; OK, I&apos;ve reproduced it with Debug build Minibrowser too.

OK, I&apos;ve found the bug. I&apos;ll create the patch for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393844</commentid>
    <comment_count>17</comment_count>
      <attachid>319769</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 04:52:04 -0800</bug_when>
    <thetext>Comment on attachment 319769
Patch

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

&gt; Source/JavaScriptCore/runtime/NumberPrototype.cpp:360
&gt; +static String toStringWithRadixInternal(int32_t number, unsigned radix)

This function does not accept 0 correctly since this function is originally used if `(unsigned)number &gt;= (unsigned)radix` condition met.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1393847</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-01-27 05:31:12 -0800</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #17)
&gt; Comment on attachment 319769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319769&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/NumberPrototype.cpp:360
&gt; &gt; +static String toStringWithRadixInternal(int32_t number, unsigned radix)
&gt; 
&gt; This function does not accept 0 correctly since this function is originally
&gt; used if `(unsigned)number &gt;= (unsigned)radix` condition met.

Opened the issue and uploaded the patch. https://bugs.webkit.org/show_bug.cgi?id=182213</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1396877</commentid>
    <comment_count>19</comment_count>
      <attachid>319769</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-02-06 11:48:56 -0800</bug_when>
    <thetext>Comment on attachment 319769
Patch

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

&gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:654
&gt; +                            node-&gt;setOpAndDefaultFlags(ToString);

This makes this node MustGenerate even though it shouldn&apos;t be. I&apos;ll fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1397113</commentid>
    <comment_count>20</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2018-02-06 23:59:15 -0800</bug_when>
    <thetext>(In reply to Saam Barati from comment #19)
&gt; Comment on attachment 319769 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=319769&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/dfg/DFGConstantFoldingPhase.cpp:654
&gt; &gt; +                            node-&gt;setOpAndDefaultFlags(ToString);
&gt; 
&gt; This makes this node MustGenerate even though it shouldn&apos;t be. I&apos;ll fix.

Oops, nice.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>305193</attachid>
            <date>2017-03-23 07:37:00 -0700</date>
            <delta_ts>2017-09-02 21:28:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170007-20170323233659.patch</filename>
            <type>text/plain</type>
            <size>18833</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE0MzAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA5
ODM5YzdjMjcxOTViOTBhYmVhZjE1ZDA3YjM0ZGNjOWY0MDJjYjRjLi44NWE2Y2EwNDNkZmY1NGEz
MDNjYjQzMWE1ZGIxNzM4MjBjMWQ3MTE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzNyBAQAorMjAxNy0wMy0yMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbSlNDXSBBZGQgc3RyZW5ndGggcmVkdWN0aW9uIGZvciBOdW1iZXJU
b1N0cmluZ1dpdGhSYWRpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTcwMDA3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgKiBkZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaDoKKyAgICAgICAg
KEpTQzo6REZHOjpBYnN0cmFjdEludGVycHJldGVyPEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0
ZUVmZmVjdHMpOgorICAgICAgICAqIGRmZy9ERkdDbG9iYmVyaXplLmg6CisgICAgICAgIChKU0M6
OkRGRzo6Y2xvYmJlcml6ZSk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAg
ICAgICAoSlNDOjpERkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RG
R05vZGUuY3BwOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb051bWJlclRvU3Ry
aW5nV2l0aENvbnN0YW50UmFkaXgpOgorICAgICAgICAqIGRmZy9ERkdOb2RlLmg6CisgICAgICAg
IChKU0M6OkRGRzo6Tm9kZTo6Y2hpbGQxKToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjpjaGls
ZDIpOgorICAgICAgICAoSlNDOjpERkc6Ok5vZGU6OmNoaWxkMyk6CisgICAgICAgIChKU0M6OkRG
Rzo6Tm9kZTo6aGFzQ29uc3RhbnRSYWRpeCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6Y29u
c3RhbnRSYWRpeCk6CisgICAgICAgICogZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcDoKKyAgICAg
ICAgKEpTQzo6REZHOjpTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFJh
ZGl4KToKKyAgICAgICAgKiBkZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHA6CisgICAg
ICAgIChKU0M6OkRGRzo6U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZTo6aGFuZGxlTm9kZSk6CisgICAg
ICAgICogZnRsL0ZUTExvd2VyREZHVG9CMy5jcHA6CisgICAgICAgIChKU0M6OkZUTDo6REZHOjpM
b3dlckRGR1RvQjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCk6CisgICAgICAgICog
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwOgorICAgICAgICAoSlNDOjp0b1N0cmluZ1dpdGhS
YWRpeEludGVybmFsKToKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdXaXRoUmFkaXgpOgorICAgICAg
ICAoSlNDOjppbnQzMlRvU3RyaW5nSW50ZXJuYWwpOgorICAgICAgICAoSlNDOjpudW1iZXJUb1N0
cmluZ0ludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5oOgorCiAy
MDE3LTAzLTIzICBHdWlsbGF1bWUgRW1vbnQgIDxndWlqZW1vbnRAaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbanNjXSBBZGQgTWFjcm9Bc3NlbWJsZXJNSVBTOjpzdG9yZUZlbmNlKCkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGlu
ZXMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklu
bGluZXMuaAppbmRleCBjYmEwZDZjYjA4ZmZjY2E3YTQyNjUyYjFkN2MyNmQ3NjZlYTkyZWZlLi42
ZDRhYmFjMzZlYWEzYWRmYWQwOTM3MDFhZjg2YjVmYzcyMjkyNzViIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5l
cy5oCkBAIC0xODc1LDEwICsxODc1LDI0IEBAIGJvb2wgQWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0
cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVFZmZlY3RzKHVuc2lnbmVkIGNsb2JiZXJMaW1pCiAgICAg
ICAgIGJyZWFrOwogICAgIH0KIAotICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6Ci0g
ICAgICAgIGNsb2JiZXJXb3JsZChub2RlLT5vcmlnaW4uc2VtYW50aWMsIGNsb2JiZXJMaW1pdCk7
CisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeDogeworICAgICAgICBib29sIGNsb2Ji
ZXIgPSB0cnVlOworICAgICAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnRSYWRpeCgpKSB7CisgICAg
ICAgICAgICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICAgICAg
Y2FzZSBJbnQzMlVzZToKKyAgICAgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZToKKyAgICAgICAgICAgICAgICBjbG9iYmVyID0gZmFsc2U7Cisg
ICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmIChjbG9iYmVy
KQorICAgICAgICAgICAgY2xvYmJlcldvcmxkKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJl
ckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3Zt
LnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAg
CiAgICAgY2FzZSBOZXdTdHJpbmdPYmplY3Q6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPnN0cnVj
dHVyZSgpLT5jbGFzc0luZm8oKSA9PSBTdHJpbmdPYmplY3Q6OmluZm8oKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCmluZGV4IDhiMzBmYzA5ZTdlNzkxYjc1OWQ5
ZDY5MWY2YjczYzc1ZGJjMGZmODguLjVjMzU3NTJhMWU5NGU5MDI5NTU5NzNlNzM0YTg3ZDkxYjAw
OGFmNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6
ZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0x
NDYwLDEwICsxNDYwLDIyIEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUqIG5v
ZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIGRlZihQ
dXJlVmFsdWUobm9kZSkpOwogICAgICAgICByZXR1cm47CiAKLSAgICBjYXNlIE51bWJlclRvU3Ry
aW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKKyAgICAg
ICAgaWYgKG5vZGUtPmhhc0NvbnN0YW50UmFkaXgoKSkgeworICAgICAgICAgICAgc3dpdGNoIChu
b2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgICAgIGNhc2UgSW50MzJVc2U6Cisg
ICAgICAgICAgICBjYXNlIEludDUyUmVwVXNlOgorICAgICAgICAgICAgY2FzZSBEb3VibGVSZXBV
c2U6CisgICAgICAgICAgICAgICAgZGVmKFB1cmVWYWx1ZShub2RlKSk7CisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICByZWFkKFdvcmxkKTsKICAgICAgICAg
d3JpdGUoSGVhcCk7CiAgICAgICAgIHJldHVybjsKKyAgICB9CiAgICAgICAgIAogICAgIGNhc2Ug
TGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKaW5kZXggYjJmMmE4MDIw
NjFkMWQ5ZDA4ZmMyNTVmOGFlOTg4MzRmN2ZlNGQ5MS4uMjhiYzI5MTdiZDVkM2Y3MDFkNzQzNTBh
YmY2ZWVmM2ZkMmViMTJmYSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdGaXh1cFBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVw
UGhhc2UuY3BwCkBAIC0xNzY4LDcgKzE3NjgsOSBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGlj
IFBoYXNlIHsKICAgICAgICAgICAgICAgICBmaXhFZGdlPEludDUyUmVwVXNlPihub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgZml4RWRnZTxEb3VibGVS
ZXBVc2U+KG5vZGUtPmNoaWxkMSgpKTsKLSAgICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5v
ZGUtPmNoaWxkMigpKTsKKworICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMigpKQorICAgICAg
ICAgICAgICAgIGZpeEVkZ2U8SW50MzJVc2U+KG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuY3BwCmlu
ZGV4IGI0ZjQ0NTY5NDIyNzRmNThlNDM3OTBhOTU4YzBlM2ExOGE2NjBhZTguLjUwYzIwNmFmNTQ0
NTZkYWM4MmEyMTBjNTNhMmMzNGNmNDFjYjY5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHTm9kZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdOb2RlLmNwcApAQCAtMjQyLDYgKzI0MiwxNSBAQCB2b2lkIE5vZGU6OmNvbnZlcnRUb0NhbGxE
T00oR3JhcGgmIGdyYXBoKQogICAgICAgICBjbGVhckZsYWdzKE5vZGVNdXN0R2VuZXJhdGUpOwog
fQogCit2b2lkIE5vZGU6OmNvbnZlcnRUb051bWJlclRvU3RyaW5nV2l0aENvbnN0YW50UmFkaXgo
aW50MzJfdCByYWRpeCkKK3sKKyAgICBBU1NFUlQob3AoKSA9PSBOdW1iZXJUb1N0cmluZ1dpdGhS
YWRpeCk7CisgICAgQVNTRVJUKHJhZGl4ID49IDIgfHwgcmFkaXggPD0gMzYpOworICAgIG1fb3BJ
bmZvID0gcmFkaXg7CisgICAgY2hpbGQyKCkgPSBFZGdlKCk7CisgICAgY2xlYXJGbGFncyhOb2Rl
TXVzdEdlbmVyYXRlKTsKK30KKwogU3RyaW5nIE5vZGU6OnRyeUdldFN0cmluZyhHcmFwaCYgZ3Jh
cGgpCiB7CiAgICAgaWYgKGhhc0NvbnN0YW50KCkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR05vZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9k
ZS5oCmluZGV4IGRmNWMyOGFjZmRkNzU1ZjllZmRlYjM3Njk4YjBiODBmMWViYzQyYjkuLmRjYTVj
ZDk2NmQyZDhlYzlmYTRiNWEwNTY3ZjRmZjc2MjA1ODA2Y2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9k
ZmcvREZHTm9kZS5oCkBAIC0xOTQwLDYgKzE5NDAsOCBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAgICAg
IEFTU0VSVCghKG1fZmxhZ3MgJiBOb2RlSGFzVmFyQXJncykpOwogICAgICAgICByZXR1cm4gY2hp
bGRyZW4uY2hpbGQxKCk7CiAgICAgfQorCisgICAgY29uc3QgRWRnZSYgY2hpbGQxKCkgY29uc3Qg
eyByZXR1cm4gY29uc3RfY2FzdDxOb2RlKj4odGhpcyktPmNoaWxkMSgpOyB9CiAgICAgCiAgICAg
Ly8gVGhpcyBpcyB1c2VmdWwgaWYgeW91IHdhbnQgdG8gZG8gYSBmYXN0IGNoZWNrIG9uIHRoZSBm
aXJzdCBjaGlsZAogICAgIC8vIGJlZm9yZSBhbHNvIGRvaW5nIGEgY2hlY2sgb24gdGhlIG9wY29k
ZS4gVXNlIHRoaXMgd2l0aCBjYXJlIGFuZApAQCAtMTk1NSwxMSArMTk1NywxNSBAQCBzdHJ1Y3Qg
Tm9kZSB7CiAgICAgICAgIHJldHVybiBjaGlsZHJlbi5jaGlsZDIoKTsKICAgICB9CiAKKyAgICBj
b25zdCBFZGdlJiBjaGlsZDIoKSBjb25zdCB7IHJldHVybiBjb25zdF9jYXN0PE5vZGUqPih0aGlz
KS0+Y2hpbGQyKCk7IH0KKwogICAgIEVkZ2UmIGNoaWxkMygpCiAgICAgewogICAgICAgICBBU1NF
UlQoIShtX2ZsYWdzICYgTm9kZUhhc1ZhckFyZ3MpKTsKICAgICAgICAgcmV0dXJuIGNoaWxkcmVu
LmNoaWxkMygpOwogICAgIH0KKworICAgIGNvbnN0IEVkZ2UmIGNoaWxkMygpIGNvbnN0IHsgcmV0
dXJuIGNvbnN0X2Nhc3Q8Tm9kZSo+KHRoaXMpLT5jaGlsZDMoKTsgfQogICAgIAogICAgIHVuc2ln
bmVkIGZpcnN0Q2hpbGQoKQogICAgIHsKQEAgLTI0NDUsNiArMjQ1MSwxOSBAQCBzdHJ1Y3QgTm9k
ZSB7CiAgICAgICAgIG1fb3BJbmZvMiA9IHN0YXRpY19jYXN0PHVpbnQzMl90Pih0eXBlKTsKICAg
ICB9CiAKKyAgICBib29sIGhhc0NvbnN0YW50UmFkaXgoKSBjb25zdAorICAgIHsKKyAgICAgICAg
cmV0dXJuIG9wKCkgPT0gTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXggJiYgIWNoaWxkMigpOworICAg
IH0KKworICAgIGludDMyX3QgY29uc3RhbnRSYWRpeCgpIGNvbnN0CisgICAgeworICAgICAgICBB
U1NFUlQoaGFzQ29uc3RhbnRSYWRpeCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPGlu
dDMyX3Q+KCk7CisgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OdW1iZXJUb1N0cmluZ1dpdGhD
b25zdGFudFJhZGl4KGludDMyX3QgcmFkaXgpOworCiAgICAgTm9kZSogcmVwbGFjZW1lbnQoKSBj
b25zdAogICAgIHsKICAgICAgICAgcmV0dXJuIG1fbWlzYy5yZXBsYWNlbWVudDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKaW5kZXggMzcyNzk0
MDAzNDAyZGY1NTFmNDA1YmI2NDk0MTBlZWY3OThmMmUzNS4uZjM0ZTRhZGFiOGJhMjI3YmI1MmEy
YjE4YjhkMzgxOGNlZTMyOTZjZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTcGVjdWxhdGl2ZUpJVC5jcHAKQEAgLTgxMDUsMjUgKzgxMDUsNjAgQEAgdm9pZCBTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcihO
b2RlKiBub2RlKQogdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3RyaW5nV2l0
aFJhZGl4KE5vZGUqIG5vZGUpCiB7CiAgICAgYm9vbCB2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID0g
ZmFsc2U7Ci0gICAgaWYgKG5vZGUtPmNoaWxkMigpLT5pc0ludDMyQ29uc3RhbnQoKSkgewotICAg
ICAgICBpbnQzMl90IHJhZGl4ID0gbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKTsKKyAgICBpbnQz
Ml90IHJhZGl4ID0gMDsKKyAgICBpZiAobm9kZS0+aGFzQ29uc3RhbnRSYWRpeCgpKSB7CisgICAg
ICAgIHJhZGl4ID0gbm9kZS0+Y29uc3RhbnRSYWRpeCgpOworICAgICAgICB2YWxpZFJhZGl4SXNH
dWFyYW50ZWVkID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKG5vZGUtPmNoaWxkMigpLT5pc0ludDMy
Q29uc3RhbnQoKSkgeworICAgICAgICByYWRpeCA9IG5vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7
CiAgICAgICAgIGlmIChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KQogICAgICAgICAgICAgdmFs
aWRSYWRpeElzR3VhcmFudGVlZCA9IHRydWU7CiAgICAgfQogCi0gICAgYXV0byBjYWxsVG9TdHJp
bmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0R1BSLCBhdXRvIHZhbHVlUmVn
LCBHUFJSZWcgcmFkaXhHUFIpIHsKKyAgICBhdXRvIGNhbGxUb1N0cmluZyA9IFsmXSAoYXV0byBv
cGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8gdmFsdWVSZWcsIGF1dG8gcmFkaXhBcmcp
IHsKICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVy
YXRpb24sIHJlc3VsdEdQUiwgdmFsdWVSZWcsIHJhZGl4R1BSKTsKKyAgICAgICAgY2FsbE9wZXJh
dGlvbihvcGVyYXRpb24sIHJlc3VsdEdQUiwgdmFsdWVSZWcsIHJhZGl4QXJnKTsKICAgICAgICAg
bV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAgICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5v
ZGUpOwogICAgIH07CiAKKyAgICBpZiAodmFsaWRSYWRpeElzR3VhcmFudGVlZCkgeworICAgICAg
ICBzd2l0Y2ggKG5vZGUtPmNoaWxkMSgpLnVzZUtpbmQoKSkgeworICAgICAgICBjYXNlIEludDMy
VXNlOiB7CisgICAgICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgdmFsdWUodGhp
cywgbm9kZS0+Y2hpbGQxKCkpOworICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVz
dWx0KHRoaXMpOworICAgICAgICAgICAgY2FsbFRvU3RyaW5nKG9wZXJhdGlvbkludDMyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeCwgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIoKSwgQ0NhbGxIZWxwZXJz
OjpUcnVzdGVkSW1tMzIocmFkaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisK
KyNpZiBVU0UoSlNWQUxVRTY0KQorICAgICAgICBjYXNlIEludDUyUmVwVXNlOiB7CisgICAgICAg
ICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQx
KCkpOworICAgICAgICAgICAgR1BSRmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOworICAg
ICAgICAgICAgY2FsbFRvU3RyaW5nKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eCwgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIoKSwgQ0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIo
cmFkaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisjZW5kaWYKKworICAgICAg
ICBjYXNlIERvdWJsZVJlcFVzZTogeworICAgICAgICAgICAgU3BlY3VsYXRlRG91YmxlT3BlcmFu
ZCB2YWx1ZSh0aGlzLCBub2RlLT5jaGlsZDEoKSk7CisgICAgICAgICAgICBHUFJGbHVzaGVkQ2Fs
bFJlc3VsdCByZXN1bHQodGhpcyk7CisgICAgICAgICAgICBjYWxsVG9TdHJpbmcob3BlcmF0aW9u
RG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCwgcmVzdWx0LmdwcigpLCB2YWx1ZS5mcHIoKSwg
Q0NhbGxIZWxwZXJzOjpUcnVzdGVkSW1tMzIocmFkaXgpKTsKKyAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICB9CisKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAg
IHN3aXRjaCAobm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgY2FzZSBJbnQzMlVzZTog
ewogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgdmFsdWUodGhpcywgbm9kZS0+
Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJhbmQgcmFkaXgodGhp
cywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJlc3VsdCByZXN1bHQo
dGhpcyk7Ci0gICAgICAgIGNhbGxUb1N0cmluZyh2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3Bl
cmF0aW9uSW50MzJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50MzJUb1N0cmlu
ZywgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIoKSwgcmFkaXguZ3ByKCkpOworICAgICAgICBjYWxs
VG9TdHJpbmcob3BlcmF0aW9uSW50MzJUb1N0cmluZywgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIo
KSwgcmFkaXguZ3ByKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAKQEAgLTgxMzIsNyArODE2
Nyw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRp
eChOb2RlKiBub2RlKQogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQ1Mk9wZXJhbmQgdmFsdWUo
dGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBTcGVjdWxhdGVTdHJpY3RJbnQzMk9wZXJh
bmQgcmFkaXgodGhpcywgbm9kZS0+Y2hpbGQyKCkpOwogICAgICAgICBHUFJGbHVzaGVkQ2FsbFJl
c3VsdCByZXN1bHQodGhpcyk7Ci0gICAgICAgIGNhbGxUb1N0cmluZyh2YWxpZFJhZGl4SXNHdWFy
YW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9u
SW50NTJUb1N0cmluZywgcmVzdWx0LmdwcigpLCB2YWx1ZS5ncHIoKSwgcmFkaXguZ3ByKCkpOwor
ICAgICAgICBjYWxsVG9TdHJpbmcob3BlcmF0aW9uSW50NTJUb1N0cmluZywgcmVzdWx0Lmdwcigp
LCB2YWx1ZS5ncHIoKSwgcmFkaXguZ3ByKCkpOwogICAgICAgICBicmVhazsKICAgICB9CiAjZW5k
aWYKQEAgLTgxNDEsNyArODE3Niw3IEBAIHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhSYWRpeChOb2RlKiBub2RlKQogICAgICAgICBTcGVjdWxhdGVEb3VibGVP
cGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgU3BlY3VsYXRlU3Ry
aWN0SW50MzJPcGVyYW5kIHJhZGl4KHRoaXMsIG5vZGUtPmNoaWxkMigpKTsKICAgICAgICAgR1BS
Rmx1c2hlZENhbGxSZXN1bHQgcmVzdWx0KHRoaXMpOwotICAgICAgICBjYWxsVG9TdHJpbmcodmFs
aWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5nV2l0aFZhbGlkUmFk
aXggOiBvcGVyYXRpb25Eb3VibGVUb1N0cmluZywgcmVzdWx0LmdwcigpLCB2YWx1ZS5mcHIoKSwg
cmFkaXguZ3ByKCkpOworICAgICAgICBjYWxsVG9TdHJpbmcob3BlcmF0aW9uRG91YmxlVG9TdHJp
bmcsIHJlc3VsdC5ncHIoKSwgdmFsdWUuZnByKCksIHJhZGl4LmdwcigpKTsKICAgICAgICAgYnJl
YWs7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdT
dHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA5ZmRmOWVmNWMxY2U1OGNjOGRmMTVjODY1
NWZjYzk1ZjAxMjQ3NzI3Li42YzY5YWNhN2FlZDNlZGI5MzJmZjZkZWM1OTQxYjhmZDI0Yjc0YzFl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0
aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhS
ZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTQyMSw2ICs0MjEsMzIgQEAgY2xhc3MgU3RyZW5ndGhSZWR1
Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
fQogCisgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKKyAgICAgICAgICAg
IGlmICghbV9ub2RlLT5oYXNDb25zdGFudFJhZGl4KCkpIHsKKyAgICAgICAgICAgICAgICBpZiAo
bV9ub2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsKKyAgICAgICAgICAgICAgICAg
ICAgaW50MzJfdCByYWRpeCA9IG1fbm9kZS0+Y2hpbGQyKCktPmFzSW50MzIoKTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIG1fbm9kZS0+Y29udmVydFRvTnVtYmVyVG9TdHJpbmdXaXRoQ29uc3RhbnRS
YWRpeChyYWRpeCk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOwor
ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQor
CisgICAgICAgICAgICBpZiAobV9ub2RlLT5oYXNDb25zdGFudFJhZGl4KCkpIHsKKyAgICAgICAg
ICAgICAgICBFZGdlJiBjaGlsZDEgPSBtX25vZGUtPmNoaWxkMSgpOworICAgICAgICAgICAgICAg
IGludDMyX3QgcmFkaXggPSBtX25vZGUtPmNvbnN0YW50UmFkaXgoKTsKKyAgICAgICAgICAgICAg
ICBpZiAoY2hpbGQxLT5oYXNDb25zdGFudCgpKSB7CisgICAgICAgICAgICAgICAgICAgIEpTVmFs
dWUgdmFsdWUgPSBjaGlsZDEtPmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAgICAgICAgICAg
ICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc051bWJlcigpKSB7CisgICAgICAgICAgICAgICAgICAg
ICAgICBTdHJpbmcgcmVzdWx0ID0gdG9TdHJpbmdXaXRoUmFkaXgodmFsdWUuYXNOdW1iZXIoKSwg
cmFkaXgpOworICAgICAgICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlND
b25zdGFudChtX2dyYXBoLCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHJlc3VsdCkp
OworICAgICAgICAgICAgICAgICAgICAgICAgbV9jaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRBcnJheUxlbmd0aDogewogICAg
ICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09IEFycmF5OjpHZW5lcmlj
CiAgICAgICAgICAgICAgICAgfHwgbV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6
OlN0cmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dl
ckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMu
Y3BwCmluZGV4IGMyZjFiN2EwMDgzYjUwOGE2ODE4MDFjYmNkYjc4OGU0YzVkMWRiMGMuLjA0N2Ri
NzQxYWExNTZmMmJiMjEyYmRkNTM3MzE1ZWJmZWUzMmQ2N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5jcHAKQEAgLTEwMDAzLDIxICsxMDAwMywyOSBA
QCBjbGFzcyBMb3dlckRGR1RvQjMgewogICAgIHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0
aFJhZGl4KCkKICAgICB7CiAgICAgICAgIGJvb2wgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IGZh
bHNlOwotICAgICAgICBpZiAobV9ub2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkpIHsK
LSAgICAgICAgICAgIGludDMyX3QgcmFkaXggPSBtX25vZGUtPmNoaWxkMigpLT5hc0ludDMyKCk7
Ci0gICAgICAgICAgICBpZiAocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNikKKyAgICAgICAgTFZh
bHVlIHJhZGl4ID0gbnVsbHB0cjsKKyAgICAgICAgaWYgKG1fbm9kZS0+aGFzQ29uc3RhbnRSYWRp
eCgpKSB7CisgICAgICAgICAgICByYWRpeCA9IG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT5jb25z
dGFudFJhZGl4KCkpOworICAgICAgICAgICAgdmFsaWRSYWRpeElzR3VhcmFudGVlZCA9IHRydWU7
CisgICAgICAgIH0gZWxzZSBpZiAobV9ub2RlLT5jaGlsZDIoKS0+aXNJbnQzMkNvbnN0YW50KCkp
IHsKKyAgICAgICAgICAgIGludDMyX3QgcmFkaXhWYWx1ZSA9IG1fbm9kZS0+Y2hpbGQyKCktPmFz
SW50MzIoKTsKKyAgICAgICAgICAgIGlmIChyYWRpeFZhbHVlID49IDIgJiYgcmFkaXhWYWx1ZSA8
PSAzNikgeworICAgICAgICAgICAgICAgIHJhZGl4ID0gbV9vdXQuY29uc3RJbnQzMihyYWRpeFZh
bHVlKTsKICAgICAgICAgICAgICAgICB2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIH0KICAgICAgICAgfQorICAgICAgICBpZiAoIXJhZGl4KQorICAgICAgICAgICAg
cmFkaXggPSBsb3dJbnQzMihtX25vZGUtPmNoaWxkMigpKTsKIAogICAgICAgICBzd2l0Y2ggKG1f
bm9kZS0+Y2hpbGQxKCkudXNlS2luZCgpKSB7CiAgICAgICAgIGNhc2UgSW50MzJVc2U6Ci0gICAg
ICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24o
dmFsaWRSYWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRS
YWRpeCA6IG9wZXJhdGlvbkludDMyVG9TdHJpbmcpLCBtX2NhbGxGcmFtZSwgbG93SW50MzIobV9u
b2RlLT5jaGlsZDEoKSksIGxvd0ludDMyKG1fbm9kZS0+Y2hpbGQyKCkpKSk7CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24odmFsaWRS
YWRpeElzR3VhcmFudGVlZCA/IG9wZXJhdGlvbkludDMyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6
IG9wZXJhdGlvbkludDMyVG9TdHJpbmcpLCBtX2NhbGxGcmFtZSwgbG93SW50MzIobV9ub2RlLT5j
aGlsZDEoKSksIHJhZGl4KSk7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBJbnQ1
MlJlcFVzZToKLSAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1f
b3V0Lm9wZXJhdGlvbih2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50NTJUb1N0cmluZyksIG1fY2FsbEZyYW1l
LCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgbG93SW50MzIobV9ub2RlLT5jaGls
ZDIoKSkpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1f
b3V0Lm9wZXJhdGlvbih2YWxpZFJhZGl4SXNHdWFyYW50ZWVkID8gb3BlcmF0aW9uSW50NTJUb1N0
cmluZ1dpdGhWYWxpZFJhZGl4IDogb3BlcmF0aW9uSW50NTJUb1N0cmluZyksIG1fY2FsbEZyYW1l
LCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgcmFkaXgpKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgICAgIHNldEpTVmFs
dWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbih2YWxpZFJhZGl4SXNHdWFy
YW50ZWVkID8gb3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlv
bkRvdWJsZVRvU3RyaW5nKSwgbV9jYWxsRnJhbWUsIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgp
KSwgbG93SW50MzIobV9ub2RlLT5jaGlsZDIoKSkpKTsKKyAgICAgICAgICAgIHNldEpTVmFsdWUo
dm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJhdGlvbih2YWxpZFJhZGl4SXNHdWFyYW50
ZWVkID8gb3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCA6IG9wZXJhdGlvbkRv
dWJsZVRvU3RyaW5nKSwgbV9jYWxsRnJhbWUsIGxvd0RvdWJsZShtX25vZGUtPmNoaWxkMSgpKSwg
cmFkaXgpKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuY3BwCmluZGV4IDZkMWVjMGZiYWZhNzMwNzFk
MTI0NGU0MjVkMDM3OWY4YTc2M2MyODUuLjc3YmUxZjIzYTUwMzJhNGE4NWU1ZmIwMDk3YmMwMzNj
ZmJhMGYyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJl
clByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVy
UHJvdG90eXBlLmNwcApAQCAtMTY1LDcgKzE2NSw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciogaW50
NTJUb1N0cmluZ1dpdGhSYWRpeChjaGFyKiBzdGFydE9mUmVzdWx0U3RyaW5nLCBpbnQ2NF90IGlu
CiAgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRTdHJpbmc7CiB9CiAKLXN0YXRpYyBjaGFyKiB0b1N0
cmluZ1dpdGhSYWRpeChSYWRpeEJ1ZmZlciYgYnVmZmVyLCBkb3VibGUgb3JpZ2luYWxOdW1iZXIs
IHVuc2lnbmVkIHJhZGl4KQorc3RhdGljIGNoYXIqIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwo
UmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9yaWdpbmFsTnVtYmVyLCB1bnNpZ25lZCByYWRp
eCkKIHsKICAgICBBU1NFUlQoc3RkOjppc2Zpbml0ZShvcmlnaW5hbE51bWJlcikpOwogICAgIEFT
U0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KTsKQEAgLTM1OSw3ICszNTksNyBAQCBzdGF0
aWMgY2hhciogdG9TdHJpbmdXaXRoUmFkaXgoUmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9y
aWdpbmFsTnVtYmVyLCB1bnNpZwogICAgIHJldHVybiBzdGFydE9mUmVzdWx0U3RyaW5nOwogfQog
Ci1zdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGludDMyX3QgbnVtYmVyLCB1bnNpZ25l
ZCByYWRpeCkKK3N0YXRpYyBTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChpbnQzMl90
IG51bWJlciwgdW5zaWduZWQgcmFkaXgpCiB7CiAgICAgTENoYXIgYnVmWzEgKyAzMl07IC8vIFdv
cnN0IGNhc2UgaXMgcmFkaXggPT0gMiwgd2hpY2ggZ2l2ZXMgdXMgMzIgZGlnaXRzICsgc2lnbi4K
ICAgICBMQ2hhciogZW5kID0gYnVmICsgV1RGX0FSUkFZX0xFTkdUSChidWYpOwpAQCAtMzg0LDYg
KzM4NCwyMSBAQCBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGludDMyX3QgbnVtYmVy
LCB1bnNpZ25lZCByYWRpeCkKICAgICByZXR1cm4gU3RyaW5nKHAsIHN0YXRpY19jYXN0PHVuc2ln
bmVkPihlbmQgLSBwKSk7CiB9CiAKK1N0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChkb3VibGUgZG91
YmxlVmFsdWUsIGludDMyX3QgcmFkaXgpCit7CisgICAgQVNTRVJUKCEocmFkaXggPCAyIHx8IHJh
ZGl4ID4gMzYpKTsKKworICAgIGludDMyX3QgaW50ZWdlclZhbHVlID0gc3RhdGljX2Nhc3Q8aW50
MzJfdD4oZG91YmxlVmFsdWUpOworICAgIGlmIChpbnRlZ2VyVmFsdWUgPT0gZG91YmxlVmFsdWUp
CisgICAgICAgIHJldHVybiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKGludGVnZXJWYWx1ZSwg
cmFkaXgpOworCisgICAgaWYgKHJhZGl4ID09IDEwIHx8ICFzdGQ6OmlzZmluaXRlKGRvdWJsZVZh
bHVlKSkKKyAgICAgICAgcmV0dXJuIFN0cmluZzo6bnVtYmVyVG9TdHJpbmdFQ01BU2NyaXB0KGRv
dWJsZVZhbHVlKTsKKworICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsKKyAgICByZXR1cm4gdG9TdHJp
bmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCk7Cit9CisKIC8v
IHRvRXhwb25lbnRpYWwgY29udmVydHMgYSBudW1iZXIgdG8gYSBzdHJpbmcsIGFsd2F5cyBmb3Jt
YXR0aW5nIGFzIGFuIGV4cG9lbnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25h
bCBhcmd1bWVudCBzcGVjaWZ5aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRv
IHJvdW5kIHRoZSBzaWduaWZpY2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRo
b2Qgb3B0aW9uYWxseSByb3VuZHMKQEAgLTUxMiw4ICs1MjcsNyBAQCBzdGF0aWMgQUxXQVlTX0lO
TElORSBKU1N0cmluZyogaW50MzJUb1N0cmluZ0ludGVybmFsKFZNJiB2bSwgaW50MzJfdCB2YWx1
ZSwgaW50MwogICAgIGlmIChyYWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlh
bFN0cmluZygmdm0sIHZtLm51bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZSkpOwogCi0gICAgcmV0dXJu
IGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkp
OwotCisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHRvU3RyaW5nV2l0aFJhZGl4
SW50ZXJuYWwodmFsdWUsIHJhZGl4KSk7CiB9CiAKIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3Ry
aW5nKiBudW1iZXJUb1N0cmluZ0ludGVybmFsKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVlLCBp
bnQzMl90IHJhZGl4KQpAQCAtNTMxLDcgKzU0NSw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpT
U3RyaW5nKiBudW1iZXJUb1N0cmluZ0ludGVybmFsKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVl
CiAgICAgICAgIHJldHVybiBqc05vbnRyaXZpYWxTdHJpbmcoJnZtLCBTdHJpbmc6Om51bWJlclRv
U3RyaW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSkpOwogCiAgICAgUmFkaXhCdWZmZXIgYnVmZmVy
OwotICAgIHJldHVybiBqc1N0cmluZygmdm0sIHRvU3RyaW5nV2l0aFJhZGl4KGJ1ZmZlciwgZG91
YmxlVmFsdWUsIHJhZGl4KSk7CisgICAgcmV0dXJuIGpzU3RyaW5nKCZ2bSwgdG9TdHJpbmdXaXRo
UmFkaXhJbnRlcm5hbChidWZmZXIsIGRvdWJsZVZhbHVlLCByYWRpeCkpOwogfQogCiBKU1N0cmlu
ZyogaW50MzJUb1N0cmluZyhWTSYgdm0sIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4
IDNjMDY5Y2IwMWIxMjJlNjZhM2VlOTg2NzQ0NTMxMTM1NTA2ZDMzMzMuLjMwMjYxMTVjMTI0OTg4
M2EyYTE0ZWUxOWZlOWUwNDU1Yzg1ZDhlNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCkBAIC01NSw0ICs1NSw2IEBAIEpTU3RyaW5nKiBp
bnQzMlRvU3RyaW5nKFZNJiwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmlu
ZyogaW50NTJUb1N0cmluZyhWTSYsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogSlNT
dHJpbmcqIG51bWJlclRvU3RyaW5nKFZNJiwgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KTsK
IAorU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSB2YWx1ZSwgaW50MzJfdCByYWRpeCk7
CisKIH0gLy8gbmFtZXNwYWNlIEpTQwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319759</attachid>
            <date>2017-09-02 21:28:11 -0700</date>
            <delta_ts>2017-09-02 21:29:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170007-20170903132810.patch</filename>
            <type>text/plain</type>
            <size>41902</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDJlMjE0MTExOGIwMTJjZGExZGJkMGFjNmUyZjI1NzU5ODI0ZDlhLi4zZWJhOTBhYTdjMDI4NmQx
MGE5MTI3ZWExYTVjNmM2ZWMzNWQ5ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5MCBAQAogMjAxNy0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbREZHXVtGVExdIEVmZmljaWVudGx5IGV4ZWN1dGUgbnVtYmVyI3Rv
U3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIEpTLCB0aGUgbmF0dXJhbCB3YXkgdG8gY29udmVydCBudW1iZXIgdG8gc3RyaW5nIHdpdGgg
cmFkaXggaXMgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBIb3dldmVyLCBvdXIg
SUMgb25seSBjYXJlcyBjZWxscy4gSWYgdGhlIGJhc2UgdmFsdWUgaXMgYSBudW1iZXIsIGl0IGFs
d2F5cyBnb2VzIHRvIHRoZSBzbG93IHBhdGguCisKKyAgICAgICAgV2hpbGUgZXh0ZW5kaW5nIG91
ciBJQyBmb3IgbnVtYmVyIGFuZCBib29sZWFuLCB0aGUgbW9zdCBtZWFuaW5nZnVsIHVzZSBvZiB0
aGlzIElDIGlzIGNhbGxpbmcgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBTbywg
aW4gdGhpcyBwYXRjaCwgd2UgZmlyc3QgYWRkIGEgZmFzdCBwYXRoIGZvciB0aGlzIGluIERGRyBi
eSB1c2luZyB3YXRjaHBvaW50LiBXZSBzZXQgdXAgYSB3YXRjaHBvaW50IGZvcgorICAgICAgICBO
dW1iZXIucHJvdG90eXBlLnRvU3RyaW5nLiBBbmQgaWYgdGhpcyB3YXRjaHBvaW50IGlzIGtlcHQg
YWxpdmUgYW5kIEdldEJ5SWQoYmFzZSwgInRvU3RyaW5nIikncyBiYXNlIHNob3VsZCBiZQorICAg
ICAgICBzcGVjdWxhdGVkIGFzIE51bWJlciwgd2UgZW1pdCBOdW1iZXIgcmVsYXRlZCBDaGVja3Mg
YW5kIGNvbnZlcnQgR2V0QnlJZCB0byBOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nIGNvbnN0YW50
LgorICAgICAgICBJdCByZW1vdmVzIGNvc3RseSBHZXRCeUlkIHNsb3cgcGF0aCwgYW5kIG1ha2Vz
IGl0IG5vbi1jbG9iYmVyaW5nIG5vZGUgKEpTQ29uc3RhbnQpLgorCisgICAgICAgIEluIGFkZGl0
aW9uLCB3ZSBhZGQgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50IG5vZGUuIFdl
IGhhdmUgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXggbm9kZSwgYnV0IGl0IG1heQorICAgICAgICB0
aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsaWQgdmFsdWUgaXMgaW5jb3JyZWN0IChmb3IgZXhhbXBs
ZSwgbnVtYmVyLnRvU3RyaW5nKDIwMDApKS4gU28gaXRzIGNsb2JiZXJpbmcgcnVsZSBpcworICAg
ICAgICBjb25zZXJ2YXRpdmVseSB1c2UgcmVhZChXb3JsZCkvd3JpdGUoSGVhcCkuIEJ1dCBpbiBy
ZWFsaXR5LCBgbnVtYmVyLnRvU3RyaW5nYCBpcyB3ZWxsIGNhbGxlZCB3aXRoIHRoZSBjb25zdGFu
dAorICAgICAgICByYWRpeCwgYW5kIHdlIGNhbiBlYXNpbHkgZmlndXJlIG91dCB0aGlzIHJhZGl4
IGlzIHZhbGlkICgyIDw9IHJhZGl4ICYmIHJhZGl4IDwgMzIpLgorICAgICAgICBXZSBhZGQgYSBy
dWxlIHRvIHRoZSBjb25zdGFudCBmb2xkaW5nIHBoYXNlIHRvIGNvbnZlcnQgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXggdG8gTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50LgorICAg
ICAgICBJdCBlbnN1cmVzIHRoYXQgaXQgaGFzIHZhbGlkIGNvbnN0YW50IHJhZGl4LiBBbmQgd2Ug
cmVsYXggb3VyIGNsb2JiZXJpbmcgcnVsZSBmb3IgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50LgorCisgICAgICAgIEFkZGVkIG1pY3JvYmVuY2htYXJrcyBzaG93IHBlcmZvcm1h
bmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKworICAg
ICAgICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICA0My44MzEyKy0x
LjMwMTcgICAgIF4gICAgICA3LjQ5MzArLTAuNTEwNSAgICAgICAgXiBkZWZpbml0ZWx5IDUuODQ5
NnggZmFzdGVyCisgICAgICAgIG51bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMCAgICAgICAg
ICAgICA3LjI3NzUrLTAuNTIyNSAgICAgXiAgICAgIDIuMTkwNistMC4xODY0ICAgICAgICBeIGRl
ZmluaXRlbHkgMy4zMjIyeCBmYXN0ZXIKKyAgICAgICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLXJh
ZGl4ICAgICAgICAgICAgICAgMzkuNzM3OCstMS40OTIxICAgICBeICAgICAxNi42MTM3Ky0wLjc3
NzYgICAgICAgIF4gZGVmaW5pdGVseSAyLjM5MTl4IGZhc3RlcgorICAgICAgICBudW1iZXItdG8t
c3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbiAgICAgICA5NC45NjY3Ky0yLjcxNTcgICAgIF4gICAg
ICA5LjMwNjArLTAuNzIwMiAgICAgICAgXiBkZWZpbml0ZWx5IDEwLjIwNDl4IGZhc3RlcgorCisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFu
dHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzV2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNXYXRjaGluZ0FycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc1dhdGNoaW5nTnVt
YmVyVG9TdHJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb051bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFsaWRSYWRpeENvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxT
dHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRs
ZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9p
bnQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjp0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKToKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdX
aXRoUmFkaXgpOgorICAgICAgICAoSlNDOjppbnQzMlRvU3RyaW5nSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL051bWJl
clByb3RvdHlwZS5oOgorCisyMDE3LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFtERkddIFJlbGF4IGFyaXR5IHJlcXVpcmVtZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MjMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGExYTIxNmEyODE5YjUzMzI2MjQ3YzM4MDI4NWM5OGRjYTIwZmI0
NTQuLmFmOThlN2YzYjBmYWE4ODM0NmNhYzYxMjBhNTcxOTgwODVlYjQ4OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE5NDksMTAgKzE5NDksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRp
eDoKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgIEpTVmFsdWUg
cmFkaXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CisgICAgICAgIGlm
IChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICBpbnQz
Ml90IHJhZGl4ID0gcmFkaXhWYWx1ZS5hc0ludDMyKCk7CisgICAgICAgICAgICBpZiAocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNikgeworICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRD
b25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFw
aCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50OiB7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgu
bV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5z
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gU3RyaW5nT2JqZWN0OjppbmZvKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2NjkxYmY5YTQ2YzE1ODk5
Y2RiNGMxYjJhMTkxNmQ2MjI1NGQ4ZDJhLi41NmMwNmIzMDhkNDI3NmNjODBmY2ZjMTc1OGMxYzAw
NTg1M2YxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTU4NCw5ICsxNTg0LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgICAgIC8vIElm
IHRoZSByYWRpeCBpcyBpbnZhbGlkLCBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCBjYW4gdGhyb3cg
YW4gZXJyb3IuCiAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAg
ICAgICAgcmV0dXJuOworCisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29u
c3RhbnQ6CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0
YW50KCkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
MTllOThlODQ2OTRkZjNkNWU4NjgyM2M4NDIwMWE1OTYyNThiMDBmZC4uMjBhMDk5ZjJmZTYxMDMw
YTc0YzQ4YWNiMTI2Zjc3YjgwYTliNmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTY0NSw2ICs2NDUsMjMg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIE51bWJlclRv
U3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSByYWRpeFZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3ZhbHVlOworICAgICAgICAgICAgICAg
IGlmIChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgcmFkaXggPSByYWRpeFZhbHVlLmFzSW50MzIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyYWRpeCA9PSAxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRvU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb051
bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChyYWRpeCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlIENoZWNrOiB7CiAg
ICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDZkOWQyMjgwNTBiYmY1MzllYWNhYjllNzAwYjg2MmE5YjI5
MGRlNzAuLjI1YjFmZmM3MjYyYTYwYjA0YWNiYTE2YTIyOTMxYmJiMTViZjU0NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE3OCw2ICsxNzgsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb1N0cmluZzoKICAg
ICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0
aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50Ogog
ICAgIGNhc2UgSW46CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBjYXNlIEp1bXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBhYTBiZTNj
Yjk0MGI5NTg4ODY1MjVjZTNjNGViNDVhNjMwODUxYjE5Li4xYTNjYmM5MjA3Zjk5ZWUzMTAzNDEy
MTJkZTU0NzMwMWI0OGMzZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEzMTEsMTQgKzEzMTEsMTMgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBp
biB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKICAgICAgICAgICAgIC8v
IFBvbHltb3JwaGljQWNjZXNzLCB3aGljaCB3aWxsIHN1cmVseSB0ZWxsIHVzIHRoYXQgdGhpcyBp
cyBhIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDk5MAorICAgICAgICAgICAgYXV0byB1aWQg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbE9yT3RoZXIoKQog
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgQmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgICYmICFtX2dy
YXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkSW5kZXhpbmdUeXBlKQog
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgRXhvdGljT2JqZWN0TW9kZSkpIHsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCldOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICh1aWQgPT0gdm0o
KS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0
dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMzMzLDYgKzEzMzIsMzAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHVpZCA9PSB2bSgpLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLmltcGwoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1dhdGNoaW5nTnVtYmVyVG9TdHJpbmdXYXRj
aHBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydENo
ZWNrPEludDMyVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUo
Z2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRDaGVjazxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1f
Z3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNl
cnRDaGVjazxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJl
ZXplKGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAyMiw2ICsyMDQ1
LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKKyAgICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQ6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNjYzMDgxNTFkZGM1MDdkNDU3
MzM5Y2I1YmRmMGU3MzA4ZmQ1NzdkOS4uNWMzOWMxNzJjNjBlMDVjYzhmODQyMjNmZGU2MjhmZmFh
ZjU0YjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzMwLDEwICs3
MzAsOCBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAg
IHJldHVybiB3YXRjaHBvaW50cygpLmlzV2F0Y2hlZChnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRU
aW1lV2F0Y2hwb2ludCgpKTsKICAgICB9CiAKLSAgICBib29sIGlzV2F0Y2hpbmdBcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KE5vZGUqIG5vZGUpCisgICAgYm9vbCBpc1dhdGNoaW5nR2xv
YmFsT2JqZWN0V2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzZXQpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludCgpOwogICAgICAgICBpZiAod2F0Y2hwb2ludHMoKS5pc1dhdGNoZWQo
c2V0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC03NDksNiArNzQ3LDIwIEBAIGNs
YXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorCisgICAgYm9vbCBpc1dhdGNoaW5nQXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIGlzV2F0Y2hpbmdHbG9iYWxP
YmplY3RXYXRjaHBvaW50KGdsb2JhbE9iamVjdCwgc2V0KTsKKyAgICB9CisKKyAgICBib29sIGlz
V2F0Y2hpbmdOdW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoTm9kZSogbm9kZSkKKyAgICB7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0ID0gZ2xv
YmFsT2JqZWN0LT5udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIGlz
V2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50KGdsb2JhbE9iamVjdCwgc2V0KTsKKyAgICB9
CiAgICAgCiAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbigpIHsgcmV0dXJu
IG1fcGxhbi5jb21waWxhdGlvbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAppbmRleCBiZTU3NjJiYjcxYmUwN2FhYjUwNzg1YzQxZWNkYjYwOTFjNzA4OTMwLi4y
YjFkODY1ZDFlMTgzMDU1OTE3MTQ5MTA0OGZmNTc3MzM4ZGM3YzczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtNjkxLDYgKzY5MSwxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNoaWxkcmVuLnNldENoaWxkMihFZGdlKCkpOwogICAgICAgICBtX29wSW5mbyA9IGNlbGw7
CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
Q29uc3RhbnQoaW50MzJfdCByYWRpeCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IE51
bWJlclRvU3RyaW5nV2l0aFJhZGl4KTsKKyAgICAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFk
aXggPD0gMzYpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQpOworICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoRWRnZSgp
KTsKKyAgICAgICAgbV9vcEluZm8gPSByYWRpeDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CiAKQEAgLTI1ODMsNiArMjU5MiwxNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxCdWNrZXRPd25lclR5cGU+
KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNWYWxpZFJhZGl4Q29uc3RhbnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50
OworICAgIH0KKworICAgIGludDMyX3QgdmFsaWRSYWRpeENvbnN0YW50KCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNWYWxpZFJhZGl4Q29uc3RhbnQoKSk7CisgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxpbnQzMl90PigpOworICAgIH0KKwogICAgIHVpbnQzMl90IGVycm9yVHlwZSgpCiAg
ICAgewogICAgICAgICBBU1NFUlQob3AoKSA9PSBUaHJvd1N0YXRpY0Vycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlOWYwNzZjOTM0MGZhNDg4NmIxOTli
OTdlNDI3YTliMDBhNzZiN2M2Li5hMmNiODIzMzMwMWNlNmNjMTlhZGUxZTBjNDIwYzJlMmJjNzcy
M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zNTQsNiAr
MzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENhbGxP
YmplY3RDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
TnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N0cmluZ09iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEluLCBOb2RlUmVz
dWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5k
ZXggZTU1YjFmNzkyMWY2NjY1YmZmMDk3ZjZjYzlkMmVjNWIyODVhNDVmNi4uMTA4ODk5NTYxZDFk
ODdjZjBkZDc2YTE0YzJkYTYxZmMwYmQ4ZjZhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTkxMiw2ICs5MTIsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgICAgICBj
YXNlIFRvU3RyaW5nOgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAg
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAgICAgICAg
Y2FzZSBNYWtlUm9wZToKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IGFkNzZiMzNiMGZhYWYxODdkYjQ2YTMwODkyZjQ3ZmNhN2UzYjQ0
OWQuLmVhZTM3NGIyMzMyNjdhYzNmZmI5NWNkN2I0YWRkYjQ0YzkzZDY0OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgY2FzZSBUb051bWJlcjoK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgogICAg
IGNhc2UgU3RyQ2F0OgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjMjAyOTA4
MjMwNzRiMDZjMWEwMzQ5YWFjZjRkODExN2Q4ODE3MjJlLi5kYjhjMDM2YzBhMjljYzRhYzViYzQ5
M2QyYWJkZTFmYjlhNGYzZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtODM1Myw3ICs4MzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6Ci0gICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
T25OdW1iZXIobm9kZSk7CisgICAgICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQobm9kZSwgMTApOwogICAgICAgICByZXR1cm47CiAKICAgICBkZWZhdWx0OgpA
QCAtODQzNCwxMSArODQzNCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIH0KIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51
bWJlcihOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENv
bnN0YW50KCkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqIG5vZGUsIGludDMyX3QgcmFkaXgpCiB7CiAg
ICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
R1BSLCBhdXRvIHZhbHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIHZhbHVlUmVnLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxMCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwg
cmVzdWx0R1BSLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IGYzNGZkNDZjMjg4ZDRjNzIyZjM2MGVjZWJhNDA0ZjQ5M2Y4ZjRkYjcuLjMyOGNiYjEw
ODFjN2RkNWQyYWVjNjlhNTY1ZGQ3YmM4YTFkMDI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI3NjYsOCArMjc2Niw5IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAogICAg
IHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSopOwotICAg
IHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKik7
CisgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5v
ZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9k
ZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggODQ2NWRlMjcwZjhiMmY0NTcxNTRiMzg2MjE1ZWIxOWY0NTVkNjdjZC4uODA3MTBhZWE2
ODFmNzA1MTZjMDhkODljODA4ZGRkOTA4Y2MwMGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yODQzLDYgKzI4
NDMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudDogeworICAgICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENv
bnN0YW50KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFs
V2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYzJmZGNlOWI5Y2IwOGNiNDM4ODcyN2MwZjAxZTVmNmQ3MGUxZjNkOC4uMzA5YzQ3
Yjk1YTYwNGQ0NWUwMTk1YzkyMDA3OTAyM2QyMzJhNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MzAzLDYgKzUzMDMs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25z
dGFudDogeworICAgICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0
YW50KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIElzT2JqZWN0OiB7
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKaW5kZXggNjVhZmI0YWU4OTVhZDQ4N2JmNWZhYmVjZGZlYjU5NzhlY2VjMDA0ZC4uNjAwOTJi
NjRlZGMyYzJmOTQ4OWU4MzdiZmM1NDcwODkwOGQzNGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC00
MjYsNiArNDI2LDE5IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE51bWJl
clRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDogeworICAgICAgICAgICAgRWRnZSYgY2hp
bGQxID0gbV9ub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgIGlmIChjaGlsZDEtPmhhc0NvbnN0
YW50KCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2hpbGQxLT5jb25zdGFu
dCgpLT52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSB0b1N0cmluZ1dpdGhS
YWRpeCh2YWx1ZS5hc051bWJlcigpLCBtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlNDb25zdGFudChtX2dyYXBo
LCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHJlc3VsdCkpOworICAgICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDogewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09
IEFycmF5OjpHZW5lcmljCiAgICAgICAgICAgICAgICAgfHwgbV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGMyMTVhNjMyOTYxZjg2ZTFiZTYyOGJiMWU5Yzk2YjY4
Y2JmZWYxMzUuLmQxZmE2MzkyOGMxYzI0ZmFhZjEyZjY2YzdkZWJmMDE1NjliYWJjNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI4NCw2
ICsyODQsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgIGNhc2UgQ2hlY2tTdWJDbGFzczoKICAgICBj
YXNlIENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGU3YjI0NjJhYjBhMzk5MTM1YzVi
YzMxMWZlN2ViYTcxZjdiZjQ3ZjYuLjEyYzA0M2U2ZTAzYmMxOGUxYzgxZDJjZWViOTJkNzk4Yjc0
ZGMwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKQEAgLTExMjMsNiArMTEyMyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgICAgICAgICBjb21waWxlTnVtYmVyVG9T
dHJpbmdXaXRoUmFkaXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE51bWJl
clRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENoZWNrU3ViQ2xhc3M6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdWJD
bGFzcygpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDQxOSw2ICsxMDQyMiwyMyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlTnVt
YmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVzZToK
KyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwg
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT52YWxp
ZFJhZGl4Q29uc3RhbnQoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1f
Y2FsbEZyYW1lLCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJ
bnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5n
V2l0aFZhbGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVS
ZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKCkKICAgICB7CiAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY5MTZhNDZiYTg1YzE1NDExMDNhYjE2MTI0YzZkMWI3NjZm
MTdjYjYuLjBjM2E3NjVlYzBlYzc4N2RlNGEzMWIzYWZhODE0NTgxN2JhYzBhNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMy
NSw2ICszMjUsNyBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TQogICAgICwgbV9tYXBTZXRXYXRj
aHBvaW50KElzV2F0Y2hlZCkKICAgICAsIG1fc2V0QWRkV2F0Y2hwb2ludChJc1dhdGNoZWQpCiAg
ICAgLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQoQ2xlYXJXYXRjaHBvaW50KQorICAgICwgbV9u
dW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoSXNXYXRjaGVkKQogICAgICwgbV90ZW1wbGF0ZVJlZ2lz
dHJ5KHZtKQogICAgICwgbV9ydW50aW1lRmxhZ3MoKQogICAgICwgbV9nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCkBAIC0xMDE1LDYgKzEwMTYsMTMgQEAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hw
b2ludCk7CiAgICAgICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwo
KTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlw
ZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAgICAgICAgIG1fbnVtYmVy
UHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNv
bmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICAgICAgbV9udW1i
ZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1f
bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihudW1iZXJQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZykpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlc2V0UHJvdG90eXBlKHZtLCBn
ZXRQcm90b3R5cGVEaXJlY3QoKSk7CkBAIC0xMjY0LDYgKzEyNzIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9U
b1N0cmluZ0Z1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1By
b21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA2YzI5ZDFh
MWE4OTUwMjg4NDM5NzYyMWZmM2I3NTMyNjA3NGI1YjI0Li4xZmIwZTk2NWEzNWViZjJlMTQwZWEx
MDQ3YWQ4NTI5MDNlZGM3YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2OSw2ICsyNjksNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3Rv
VmFsdWVPZkZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX251bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0
dGVyOwpAQCAtNDEzLDYgKzQxNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNl
dFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnQ7IH0KICAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBv
aW50OyB9CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgp
IHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50OyB9CiAgICAgLy8gSWYgdGhpcyBoYXNuJ3QgYmVlbiBpbnZhbGlkYXRlZCwg
aXQgbWVhbnMgdGhlIGFycmF5IGl0ZXJhdG9yIHByb3RvY29sCiAgICAgLy8gaXMgbm90IG9ic2Vy
dmFibGUgdG8gdXNlciBjb2RlIHlldC4KICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludDsKQEAgLTQyMiw2ICs0MjQsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBJbmxp
bmVXYXRjaHBvaW50U2V0IG1fbWFwU2V0V2F0Y2hwb2ludDsKICAgICBJbmxpbmVXYXRjaHBvaW50
U2V0IG1fc2V0QWRkV2F0Y2hwb2ludDsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludDsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9hcnJheVByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlJ
dGVyYXRvclByb3RvdHlwZU5leHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX21hcFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludDsKQEAgLTQzMiw2ICs0MzUsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+IG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50
OwogCiAgICAgYm9vbCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0
QW5kTm9uT2JzZXJ2YWJsZSgpOwpAQCAtNTQyLDYgKzU0Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24q
IGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90
b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNG
dW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIHJlZ0V4cFBy
b3RvRXhlY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0V4ZWMuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCmluZGV4IDBhNzQ0MWJlMTI5NDZkZDQzN2ZkNTMyZmYwYTFlYzlhYzNlMmJiMDcuLmZkYTlj
ZDE2NDA2Mjg5OTg1ZmEwODA3NWQwOTFlMDA4YzJhMGIxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgsNiBA
QCBjb25zdCBDbGFzc0luZm8gTnVtYmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJOdW1iZXIiLCAm
TnVtYmVyT2JqZWN0OjpzX2luZm8sICZudQogCiAvKiBTb3VyY2UgZm9yIE51bWJlclByb3RvdHlw
ZS5sdXQuaAogQGJlZ2luIG51bWJlclByb3RvdHlwZVRhYmxlCi0gIHRvU3RyaW5nICAgICAgICAg
IG51bWJlclByb3RvRnVuY1RvU3RyaW5nICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBOdW1i
ZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYwogICB0b0xvY2FsZVN0cmluZyAgICBudW1iZXJQ
cm90b0Z1bmNUb0xvY2FsZVN0cmluZyAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdmFsdWVPZiAg
ICAgICAgICAgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZiAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAwCiAgIHRvRml4ZWQgICAgICAgICAgIG51bWJlclByb3RvRnVuY1RvRml4ZWQgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQpAQCAtNzksMTAgKzc4LDkgQEAgdm9pZCBOdW1iZXJQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZSh2bSwg
anNOdW1iZXIoMCkpOwogCisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCBudW1iZXJQcm90b0Z1bmNU
b1N0cmluZywgRG9udEVudW0sIDEsIE51bWJlclByb3RvdHlwZVRvU3RyaW5nSW50cmluc2ljKTsK
ICNpZiBFTkFCTEUoSU5UTCkKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oInRvTG9jYWxlU3RyaW5nIiwgbnVtYmVyUHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2Rl
R2VuZXJhdG9yLCBEb250RW51bSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKQEAgLTE2NSw3ICsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIqIGludDUyVG9T
dHJpbmdXaXRoUmFkaXgoY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZywgaW50NjRfdCBpbgogICAg
IHJldHVybiBzdGFydE9mUmVzdWx0U3RyaW5nOwogfQogCi1zdGF0aWMgY2hhciogdG9TdHJpbmdX
aXRoUmFkaXgoUmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9yaWdpbmFsTnVtYmVyLCB1bnNp
Z25lZCByYWRpeCkKK3N0YXRpYyBjaGFyKiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKFJhZGl4
QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBvcmlnaW5hbE51bWJlciwgdW5zaWduZWQgcmFkaXgpCiB7
CiAgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUob3JpZ2luYWxOdW1iZXIpKTsKICAgICBBU1NFUlQo
cmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0zNTksNyArMzU3LDcgQEAgc3RhdGljIGNo
YXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBvcmlnaW5h
bE51bWJlciwgdW5zaWcKICAgICByZXR1cm4gc3RhcnRPZlJlc3VsdFN0cmluZzsKIH0KIAotc3Rh
dGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChpbnQzMl90IG51bWJlciwgdW5zaWduZWQgcmFk
aXgpCitzdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoaW50MzJfdCBudW1i
ZXIsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIExDaGFyIGJ1ZlsxICsgMzJdOyAvLyBXb3JzdCBj
YXNlIGlzIHJhZGl4ID09IDIsIHdoaWNoIGdpdmVzIHVzIDMyIGRpZ2l0cyArIHNpZ24uCiAgICAg
TENoYXIqIGVuZCA9IHN0ZDo6ZW5kKGJ1Zik7CkBAIC0zODQsNiArMzgyLDIxIEBAIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQog
ICAgIHJldHVybiBTdHJpbmcocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHApKTsKIH0K
IAorU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCBy
YWRpeCkKK3sKKyAgICBBU1NFUlQoIShyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikpOworCisgICAg
aW50MzJfdCBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7
CisgICAgaWYgKGludGVnZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHRv
U3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoaW50ZWdlclZhbHVlLCByYWRpeCk7CisKKyAgICBpZiAo
cmFkaXggPT0gMTAgfHwgIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQorICAgICAgICByZXR1
cm4gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpOworCisgICAg
UmFkaXhCdWZmZXIgYnVmZmVyOworICAgIHJldHVybiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFs
KGJ1ZmZlciwgZG91YmxlVmFsdWUsIHJhZGl4KTsKK30KKwogLy8gdG9FeHBvbmVudGlhbCBjb252
ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgYWx3YXlzIGZvcm1hdHRpbmcgYXMgYW4gZXhwb25l
bnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5
aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRvIHJvdW5kIHRoZSBzaWduaWZp
Y2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSByb3Vu
ZHMKQEAgLTUyMCw3ICs1MzMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogaW50
MzJUb1N0cmluZ0ludGVybmFsKFZNJiB2bSwgaW50MzJfdCB2YWx1ZSwgaW50MwogICAgIGlmIChy
YWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHZtLm51
bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZSkpOwogCi0gICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zygmdm0sIHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpOworICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoJnZtLCB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKHZhbHVlLCByYWRp
eCkpOwogCiB9CiAKQEAgLTUzOSw3ICs1NTIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0
cmluZyogbnVtYmVyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZQog
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nOjpudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKTsKIAogICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsK
LSAgICByZXR1cm4ganNTdHJpbmcoJnZtLCB0b1N0cmluZ1dpdGhSYWRpeChidWZmZXIsIGRvdWJs
ZVZhbHVlLCByYWRpeCkpOworICAgIHJldHVybiBqc1N0cmluZygmdm0sIHRvU3RyaW5nV2l0aFJh
ZGl4SW50ZXJuYWwoYnVmZmVyLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAogSlNTdHJpbmcq
IGludDMyVG9TdHJpbmcoVk0mIHZtLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAppbmRleCAz
YzA2OWNiMDFiMTIyZTY2YTNlZTk4Njc0NDUzMTEzNTUwNmQzMzMzLi4wMzliMGQ1OWQxZWM1YmQz
NWE1YWMyZmFmNTExMDE3YWFhYjU4YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtNTQsNSArNTQsNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CiBKU1N0
cmluZyogaW50MzJUb1N0cmluZyhWTSYsIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwog
SlNTdHJpbmcqIGludDUyVG9TdHJpbmcoVk0mLCBpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHJhZGl4
KTsKIEpTU3RyaW5nKiBudW1iZXJUb1N0cmluZyhWTSYsIGRvdWJsZSB2YWx1ZSwgaW50MzJfdCBy
YWRpeCk7CitTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQz
Ml90IHJhZGl4KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiYTU4NmE2NTEyOWI3YzQ2NjhkMmNm
YTAyNzljNmMwMTRmOWQzN2UuLjg3MjZjNWQwNzExMTU5YTE1NmRhODdhN2Y1OTNmMjI3YWE5MDI5
MTkgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMzMgQEAKIDIwMTctMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBFZmZpY2llbnRseSBleGVjdXRlIG51
bWJlciN0b1N0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzAwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVj
dGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFy
a3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LTEwLmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFk
aXgtY3NlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXguanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtMTAuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL251bWJl
ci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0
aC1yYWRpeC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToK
KworMjAxNy0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKwog
ICAgICAgICBbREZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudAogICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTc1NTIzCiAKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9uLmpz
IGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1
Y3Rpb24uanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uMmU3MDA5NTk5MjFiYTFiNzkxM2U5MGQ1NjM4ZGNkZmExOWFh
ZjVmNgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10
by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9uLmpzCkBAIC0wLDAgKzEsOSBAQAorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IDQyOworICAgIHJldHVybiB0YXJnZXQudG9TdHJp
bmcoMTYpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU2OyAr
K2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVt
YmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LTEwLmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3Mv
bnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LTEwLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjljMDgzY2I0YjZm
YmFiZTY3ZmRmNWMxMzJkMGU1ZDQ5MGM1ZjgxYzQKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtMTAuanMKQEAgLTAs
MCArMSwxMCBAQAorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAx
MDsgKytpKQorICAgICAgICB2YXIgcmVzdWx0ID0gaS50b1N0cmluZygxMCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsg
KytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251
bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY2YmMxNTJl
YTg3MDkzM2Q3MGUzMDhmYzUzZDQxYWQ2ZjJmYzg2YTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rl
c3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlLmpzCkBA
IC0wLDAgKzEsMTQgQEAKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgMWUyOyArK2kpIHsKKyAgICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIGkudG9TdHJp
bmcoMTYpOworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7
CisgICAgICAgIGkudG9TdHJpbmcoMTYpOworICAgIH0KK30KK25vSW5saW5lKHRlc3QpOworCitm
b3IgKHZhciBpID0gMDsgaSA8IDFlMzsgKytpKQorICAgIHRlc3QoKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcyBiL0pT
VGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wMjEzMDIwYjg1ZWIxNzFmNTcwMGYwZDFkYWZhMzdmYjQwNjM2Y2FjCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy13aXRo
LXJhZGl4LmpzCkBAIC0wLDAgKzEsMTYgQEAKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGZvciAo
dmFyIGkgPSAwOyBpIDwgMTA7ICsraSkgeworICAgICAgICB2YXIgcmVzdWx0ID0gJyc7CisgICAg
ICAgIHJlc3VsdCArPSBpLnRvU3RyaW5nKDIpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmlu
Zyg0KTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoOCk7CisgICAgICAgIHJlc3VsdCAr
PSBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoMzIpOworICAg
IH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvbnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rpb24uanMgYi9KU1Rlc3RzL3N0cmVz
cy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42ZjA5
OTNmMzFjYTNjZTM3NTk3MTY2ZDE5MGM4NDFlMzM3OWRlYzljCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rpb24uanMKQEAg
LTAsMCArMSwxNCBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAg
IGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2
YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciB0YXJn
ZXQgPSA0MjsKKyAgICByZXR1cm4gdGFyZ2V0LnRvU3RyaW5nKDE2KTsKK30KK25vSW5saW5lKHRl
c3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNjsgKytpKQorICAgIHNob3VsZEJlKHRlc3Qo
KSwgYDJhYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdp
dGgtcmFkaXgtMTAuanMgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFk
aXgtMTAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uYmY4ZjZhMGQwZDVlZjk4YzkzYjI0ZmNlNjJlYTg3NDViYjc3
ZjAwZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmct
d2l0aC1yYWRpeC0xMC5qcwpAQCAtMCwwICsxLDE1IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1
YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KK25vSW5saW5lKHNob3Vs
ZEJlKTsKKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsg
KytpKQorICAgICAgICBzaG91bGRCZShpLnRvU3RyaW5nKDEwKSwgIiIgKyBpKTsKK30KK25vSW5s
aW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAgIHRlc3QoKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1j
c2UuanMgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlLmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmRiNzgyMTZkNThkZjZhOTUzODA0MGYxZjc0MmJmZTBiZDdjNzM1ZDEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFk
aXgtY3NlLmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhw
ZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgcmVzdWx0OworICAgIGZvciAodmFyIGkgPSAwOyBpIDwgMWUyOyArK2kpIHsKKyAg
ICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIGkudG9TdHJpbmcoMTYpOworICAgICAgICBp
LnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIHJlc3VsdCA9
IGkudG9TdHJpbmcoMTYpOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorbm9JbmxpbmUo
dGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyArK2kpCisgICAgc2hvdWxkQmUodGVz
dCgpLCBgNjNgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmct
d2l0aC1yYWRpeC1pbnZhbGlkLmpzIGIvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13
aXRoLXJhZGl4LWludmFsaWQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDY5MDk2NTE0ZjA1MmU0NzRhYzQxNzkx
YTczZmRmZTUwNjQxZTZiMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJl
ci10by1zdHJpbmctd2l0aC1yYWRpeC1pbnZhbGlkLmpzCkBAIC0wLDAgKzEsMjQgQEAKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yTWVzc2FnZSkgeworICAgIHZhciBlcnJvclRocm93
biA9IGZhbHNlOworICAgIHZhciBlcnJvciA9IG51bGw7CisgICAgdHJ5IHsKKyAgICAgICAgZnVu
YygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3JUaHJvd24gPSB0cnVlOworICAg
ICAgICBlcnJvciA9IGU7CisgICAgfQorICAgIGlmICghZXJyb3JUaHJvd24pCisgICAgICAgIHRo
cm93IG5ldyBFcnJvcignbm90IHRocm93bicpOworICAgIGlmIChTdHJpbmcoZXJyb3IpICE9PSBl
cnJvck1lc3NhZ2UpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgYmFkIGVycm9yOiAke1N0cmlu
ZyhlcnJvcil9YCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoaSwgcmFkaXgpCit7CisgICAgcmV0dXJu
IGkudG9TdHJpbmcocmFkaXgpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAw
OyBpIDwgMWU0OyArK2kpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB0ZXN0KGksIDQyKSwgYFJh
bmdlRXJyb3I6IHRvU3RyaW5nKCkgcmFkaXggYXJndW1lbnQgbXVzdCBiZSBiZXR3ZWVuIDIgYW5k
IDM2YCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdp
dGgtcmFkaXguanMgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgu
anMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uZTUxYTk3NjAwMDg1MGE4OGM2ZjA4NDg5NGEyNDhkOGEzNDMyZjlhZQot
LS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1y
YWRpeC5qcwpAQCAtMCwwICsxLDIxIEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVj
dGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBF
cnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7Cisg
ICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7CisgICAgICAgIHZhciByZXN1bHQgPSAn
JzsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoMik7CisgICAgICAgIHJlc3VsdCArPSBp
LnRvU3RyaW5nKDQpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZyg4KTsKKyAgICAgICAg
cmVzdWx0ICs9IGkudG9TdHJpbmcoMTYpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygz
Mik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCksIGAxMDAxMjEx
MTk5YCk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319760</attachid>
            <date>2017-09-02 21:29:16 -0700</date>
            <delta_ts>2017-09-03 03:06:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170007-20170903132914.patch</filename>
            <type>text/plain</type>
            <size>41991</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCA3
ZDJlMjE0MTExOGIwMTJjZGExZGJkMGFjNmUyZjI1NzU5ODI0ZDlhLi4zZWJhOTBhYTdjMDI4NmQx
MGE5MTI3ZWExYTVjNmM2ZWMzNWQ5ZThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw5MCBAQAogMjAxNy0wOS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KIAorICAgICAgICBbREZHXVtGVExdIEVmZmljaWVudGx5IGV4ZWN1dGUgbnVtYmVyI3Rv
U3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIEpTLCB0aGUgbmF0dXJhbCB3YXkgdG8gY29udmVydCBudW1iZXIgdG8gc3RyaW5nIHdpdGgg
cmFkaXggaXMgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBIb3dldmVyLCBvdXIg
SUMgb25seSBjYXJlcyBjZWxscy4gSWYgdGhlIGJhc2UgdmFsdWUgaXMgYSBudW1iZXIsIGl0IGFs
d2F5cyBnb2VzIHRvIHRoZSBzbG93IHBhdGguCisKKyAgICAgICAgV2hpbGUgZXh0ZW5kaW5nIG91
ciBJQyBmb3IgbnVtYmVyIGFuZCBib29sZWFuLCB0aGUgbW9zdCBtZWFuaW5nZnVsIHVzZSBvZiB0
aGlzIElDIGlzIGNhbGxpbmcgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBTbywg
aW4gdGhpcyBwYXRjaCwgd2UgZmlyc3QgYWRkIGEgZmFzdCBwYXRoIGZvciB0aGlzIGluIERGRyBi
eSB1c2luZyB3YXRjaHBvaW50LiBXZSBzZXQgdXAgYSB3YXRjaHBvaW50IGZvcgorICAgICAgICBO
dW1iZXIucHJvdG90eXBlLnRvU3RyaW5nLiBBbmQgaWYgdGhpcyB3YXRjaHBvaW50IGlzIGtlcHQg
YWxpdmUgYW5kIEdldEJ5SWQoYmFzZSwgInRvU3RyaW5nIikncyBiYXNlIHNob3VsZCBiZQorICAg
ICAgICBzcGVjdWxhdGVkIGFzIE51bWJlciwgd2UgZW1pdCBOdW1iZXIgcmVsYXRlZCBDaGVja3Mg
YW5kIGNvbnZlcnQgR2V0QnlJZCB0byBOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nIGNvbnN0YW50
LgorICAgICAgICBJdCByZW1vdmVzIGNvc3RseSBHZXRCeUlkIHNsb3cgcGF0aCwgYW5kIG1ha2Vz
IGl0IG5vbi1jbG9iYmVyaW5nIG5vZGUgKEpTQ29uc3RhbnQpLgorCisgICAgICAgIEluIGFkZGl0
aW9uLCB3ZSBhZGQgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50IG5vZGUuIFdl
IGhhdmUgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXggbm9kZSwgYnV0IGl0IG1heQorICAgICAgICB0
aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsaWQgdmFsdWUgaXMgaW5jb3JyZWN0IChmb3IgZXhhbXBs
ZSwgbnVtYmVyLnRvU3RyaW5nKDIwMDApKS4gU28gaXRzIGNsb2JiZXJpbmcgcnVsZSBpcworICAg
ICAgICBjb25zZXJ2YXRpdmVseSB1c2UgcmVhZChXb3JsZCkvd3JpdGUoSGVhcCkuIEJ1dCBpbiBy
ZWFsaXR5LCBgbnVtYmVyLnRvU3RyaW5nYCBpcyB3ZWxsIGNhbGxlZCB3aXRoIHRoZSBjb25zdGFu
dAorICAgICAgICByYWRpeCwgYW5kIHdlIGNhbiBlYXNpbHkgZmlndXJlIG91dCB0aGlzIHJhZGl4
IGlzIHZhbGlkICgyIDw9IHJhZGl4ICYmIHJhZGl4IDwgMzIpLgorICAgICAgICBXZSBhZGQgYSBy
dWxlIHRvIHRoZSBjb25zdGFudCBmb2xkaW5nIHBoYXNlIHRvIGNvbnZlcnQgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXggdG8gTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50LgorICAg
ICAgICBJdCBlbnN1cmVzIHRoYXQgaXQgaGFzIHZhbGlkIGNvbnN0YW50IHJhZGl4LiBBbmQgd2Ug
cmVsYXggb3VyIGNsb2JiZXJpbmcgcnVsZSBmb3IgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50LgorCisgICAgICAgIEFkZGVkIG1pY3JvYmVuY2htYXJrcyBzaG93IHBlcmZvcm1h
bmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKworICAg
ICAgICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICA0My44MzEyKy0x
LjMwMTcgICAgIF4gICAgICA3LjQ5MzArLTAuNTEwNSAgICAgICAgXiBkZWZpbml0ZWx5IDUuODQ5
NnggZmFzdGVyCisgICAgICAgIG51bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMCAgICAgICAg
ICAgICA3LjI3NzUrLTAuNTIyNSAgICAgXiAgICAgIDIuMTkwNistMC4xODY0ICAgICAgICBeIGRl
ZmluaXRlbHkgMy4zMjIyeCBmYXN0ZXIKKyAgICAgICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLXJh
ZGl4ICAgICAgICAgICAgICAgMzkuNzM3OCstMS40OTIxICAgICBeICAgICAxNi42MTM3Ky0wLjc3
NzYgICAgICAgIF4gZGVmaW5pdGVseSAyLjM5MTl4IGZhc3RlcgorICAgICAgICBudW1iZXItdG8t
c3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbiAgICAgICA5NC45NjY3Ky0yLjcxNTcgICAgIF4gICAg
ICA5LjMwNjArLTAuNzIwMiAgICAgICAgXiBkZWZpbml0ZWx5IDEwLjIwNDl4IGZhc3RlcgorCisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFu
dHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzV2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNXYXRjaGluZ0FycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc1dhdGNoaW5nTnVt
YmVyVG9TdHJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb051bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFsaWRSYWRpeENvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxT
dHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRs
ZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9p
bnQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjp0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKToKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdX
aXRoUmFkaXgpOgorICAgICAgICAoSlNDOjppbnQzMlRvU3RyaW5nSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL051bWJl
clByb3RvdHlwZS5oOgorCisyMDE3LTA5LTAyICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFA
Z21haWwuY29tPgorCiAgICAgICAgIFtERkddIFJlbGF4IGFyaXR5IHJlcXVpcmVtZW50CiAgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzU1MjMKIApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVy
SW5saW5lcy5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdBYnN0cmFjdEludGVycHJl
dGVySW5saW5lcy5oCmluZGV4IGExYTIxNmEyODE5YjUzMzI2MjQ3YzM4MDI4NWM5OGRjYTIwZmI0
NTQuLmFmOThlN2YzYjBmYWE4ODM0NmNhYzYxMjBhNTcxOTgwODVlYjQ4OTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJ
bmxpbmVzLmgKQEAgLTE5NDksMTAgKzE5NDksMjUgQEAgYm9vbCBBYnN0cmFjdEludGVycHJldGVy
PEFic3RyYWN0U3RhdGVUeXBlPjo6ZXhlY3V0ZUVmZmVjdHModW5zaWduZWQgY2xvYmJlckxpbWkK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhSYWRp
eDoKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgIEpTVmFsdWUg
cmFkaXhWYWx1ZSA9IGZvck5vZGUobm9kZS0+Y2hpbGQyKCkpLm1fdmFsdWU7CisgICAgICAgIGlm
IChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICBpbnQz
Ml90IHJhZGl4ID0gcmFkaXhWYWx1ZS5hc0ludDMyKCk7CisgICAgICAgICAgICBpZiAocmFkaXgg
Pj0gMiAmJiByYWRpeCA8PSAzNikgeworICAgICAgICAgICAgICAgIG1fc3RhdGUuc2V0Rm91bmRD
b25zdGFudHModHJ1ZSk7CisgICAgICAgICAgICAgICAgZm9yTm9kZShub2RlKS5zZXQobV9ncmFw
aCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICAgICAgY2xvYmJlcldvcmxkKG5v
ZGUtPm9yaWdpbi5zZW1hbnRpYywgY2xvYmJlckxpbWl0KTsKICAgICAgICAgZm9yTm9kZShub2Rl
KS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5nZXQoKSk7CiAgICAg
ICAgIGJyZWFrOworICAgIH0KKworICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50OiB7CisgICAgICAgIGZvck5vZGUobm9kZSkuc2V0KG1fZ3JhcGgsIG1fZ3JhcGgu
bV92bS5zdHJpbmdTdHJ1Y3R1cmUuZ2V0KCkpOworICAgICAgICBicmVhazsKKyAgICB9CiAgICAg
ICAgIAogICAgIGNhc2UgTmV3U3RyaW5nT2JqZWN0OiB7CiAgICAgICAgIEFTU0VSVChub2RlLT5z
dHJ1Y3R1cmUoKS0+Y2xhc3NJbmZvKCkgPT0gU3RyaW5nT2JqZWN0OjppbmZvKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDbG9iYmVyaXplLmggYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaAppbmRleCA2NjkxYmY5YTQ2YzE1ODk5
Y2RiNGMxYjJhMTkxNmQ2MjI1NGQ4ZDJhLi41NmMwNmIzMDhkNDI3NmNjODBmY2ZjMTc1OGMxYzAw
NTg1M2YxMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2Ji
ZXJpemUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaApA
QCAtMTU4NCw5ICsxNTg0LDE0IEBAIHZvaWQgY2xvYmJlcml6ZShHcmFwaCYgZ3JhcGgsIE5vZGUq
IG5vZGUsIGNvbnN0IFJlYWRGdW5jdG9yJiByZWFkLCBjb25zdCBXcml0ZUZ1CiAgICAgICAgIHJl
dHVybjsKIAogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgICAgIC8vIElm
IHRoZSByYWRpeCBpcyBpbnZhbGlkLCBOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCBjYW4gdGhyb3cg
YW4gZXJyb3IuCiAgICAgICAgIHJlYWQoV29ybGQpOwogICAgICAgICB3cml0ZShIZWFwKTsKICAg
ICAgICAgcmV0dXJuOworCisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29u
c3RhbnQ6CisgICAgICAgIGRlZihQdXJlVmFsdWUobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENvbnN0
YW50KCkpKTsKKyAgICAgICAgcmV0dXJuOwogICAgICAgICAKICAgICBjYXNlIExhc3ROb2RlVHlw
ZToKICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ29uc3RhbnRGb2xkaW5nUGhhc2UuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKaW5kZXgg
MTllOThlODQ2OTRkZjNkNWU4NjgyM2M4NDIwMWE1OTYyNThiMDBmZC4uMjBhMDk5ZjJmZTYxMDMw
YTc0YzQ4YWNiMTI2Zjc3YjgwYTliNmMyOSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAKQEAgLTY0NSw2ICs2NDUsMjMg
QEAgY2xhc3MgQ29uc3RhbnRGb2xkaW5nUGhhc2UgOiBwdWJsaWMgUGhhc2UgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBjYXNlIE51bWJlclRv
U3RyaW5nV2l0aFJhZGl4OiB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSByYWRpeFZhbHVlID0g
bV9zdGF0ZS5mb3JOb2RlKG5vZGUtPmNoaWxkMigpKS5tX3ZhbHVlOworICAgICAgICAgICAgICAg
IGlmIChyYWRpeFZhbHVlICYmIHJhZGl4VmFsdWUuaXNJbnQzMigpKSB7CisgICAgICAgICAgICAg
ICAgICAgIGludDMyX3QgcmFkaXggPSByYWRpeFZhbHVlLmFzSW50MzIoKTsKKyAgICAgICAgICAg
ICAgICAgICAgaWYgKHJhZGl4ID49IDIgJiYgcmFkaXggPD0gMzYpIHsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChyYWRpeCA9PSAxMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG5vZGUtPnNldE9wQW5kRGVmYXVsdEZsYWdzKFRvU3RyaW5nKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBub2RlLT5jaGlsZDIoKSA9IEVkZ2UoKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNvbnZlcnRUb051
bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChyYWRpeCk7CisgICAgICAgICAgICAg
ICAgICAgICAgICBjaGFuZ2VkID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
ICAgIGJyZWFrOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBjYXNlIENoZWNrOiB7CiAg
ICAgICAgICAgICAgICAgYWxyZWFkeUhhbmRsZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIG1f
aW50ZXJwcmV0ZXIuZXhlY3V0ZShpbmRleEluQmxvY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdEb2VzR0MuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdEb2VzR0MuY3BwCmluZGV4IDZkOWQyMjgwNTBiYmY1MzllYWNhYjllNzAwYjg2MmE5YjI5
MGRlNzAuLjI1YjFmZmM3MjYyYTYwYjA0YWNiYTE2YTIyOTMxYmJiMTViZjU0NWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRG9lc0dDLmNwcAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKQEAgLTE3OCw2ICsxNzgsNyBAQCBib29s
IGRvZXNHQyhHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAgY2FzZSBUb1N0cmluZzoKICAg
ICBjYXNlIENhbGxTdHJpbmdDb25zdHJ1Y3RvcjoKICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0
aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50Ogog
ICAgIGNhc2UgSW46CiAgICAgY2FzZSBIYXNPd25Qcm9wZXJ0eToKICAgICBjYXNlIEp1bXA6CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0ZpeHVwUGhhc2UuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcAppbmRleCBhYTBiZTNj
Yjk0MGI5NTg4ODY1MjVjZTNjNGViNDVhNjMwODUxYjE5Li4xYTNjYmM5MjA3Zjk5ZWUzMTAzNDEy
MTJkZTU0NzMwMWI0OGMzZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0ZpeHVwUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4
dXBQaGFzZS5jcHAKQEAgLTEzMTEsMTQgKzEzMTEsMTMgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1
YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgZG9uZSBp
biB0aGUgQnl0ZUNvZGVQYXJzZXIgYmFzZWQgb24gcmVhZGluZyB0aGUKICAgICAgICAgICAgIC8v
IFBvbHltb3JwaGljQWNjZXNzLCB3aGljaCB3aWxsIHN1cmVseSB0ZWxsIHVzIHRoYXQgdGhpcyBp
cyBhIEFjY2Vzc0Nhc2U6OkFycmF5TGVuZ3RoLgogICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NDk5MAorICAgICAgICAgICAgYXV0byB1aWQg
PSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbm9kZS0+aWRlbnRpZmllck51bWJlcigpXTsKICAgICAg
ICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2VsbE9yT3RoZXIoKQog
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgQmFkVHlwZSkKICAgICAgICAgICAgICAgICAmJiAhbV9ncmFwaC5oYXNFeGl0U2l0ZShu
b2RlLT5vcmlnaW4uc2VtYW50aWMsIEJhZENhY2hlKQogICAgICAgICAgICAgICAgICYmICFtX2dy
YXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywgQmFkSW5kZXhpbmdUeXBlKQog
ICAgICAgICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1h
bnRpYywgRXhvdGljT2JqZWN0TW9kZSkpIHsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAg
ICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMoKVtub2RlLT5pZGVudGlmaWVyTnVt
YmVyKCldOwotICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGlmICh1aWQgPT0gdm0o
KS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGguaW1wbCgpKSB7CiAgICAgICAgICAgICAgICAgICAgIGF0
dGVtcHRUb01ha2VHZXRBcnJheUxlbmd0aChub2RlKTsKICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CkBAIC0xMzMzLDYgKzEzMzIsMzAgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFz
ZSB7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICBpZiAo
bm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJlcigpKSB7CisgICAgICAgICAgICAg
ICAgaWYgKHVpZCA9PSB2bSgpLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLmltcGwoKSkgeworICAg
ICAgICAgICAgICAgICAgICBpZiAobV9ncmFwaC5pc1dhdGNoaW5nTnVtYmVyVG9TdHJpbmdXYXRj
aHBvaW50KG5vZGUpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gbV9ncmFwaC5nbG9iYWxPYmplY3RGb3Iobm9kZS0+b3JpZ2luLnNlbWFu
dGljKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlSW50MzIoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydENo
ZWNrPEludDMyVXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUo
Z2xvYmFsT2JqZWN0LT5udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSkpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisg
ICAgICAgICAgICAgICAgICAgICAgICBpZiAoZW5hYmxlSW50NTIoKSAmJiBub2RlLT5jaGlsZDEo
KS0+c2hvdWxkU3BlY3VsYXRlQW55SW50KCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbnNlcnRDaGVjazxJbnQ1MlJlcFVzZT4obm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1f
Z3JhcGguZnJlZXplKGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkp
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAgICAgQVNTRVJUKG5vZGUtPmNoaWxkMSgp
LT5zaG91bGRTcGVjdWxhdGVOdW1iZXIoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBpbnNl
cnRDaGVjazxEb3VibGVSZXBVc2U+KG5vZGUtPmNoaWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAg
ICAgICAgICAgICAgICBtX2dyYXBoLmNvbnZlcnRUb0NvbnN0YW50KG5vZGUsIG1fZ3JhcGguZnJl
ZXplKGdsb2JhbE9iamVjdC0+bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkpKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAobm9kZS0+Y2hpbGQx
KCktPnNob3VsZFNwZWN1bGF0ZUNlbGwoKSkKICAgICAgICAgICAgICAgICBmaXhFZGdlPENlbGxV
c2U+KG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjAyMiw2ICsyMDQ1
LDcgQEAgY2xhc3MgRml4dXBQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgIGNhc2UgUHV0
QnlWYWxXaXRoVGhpczoKICAgICAgICAgY2FzZSBHZXRCeVZhbFdpdGhUaGlzOgogICAgICAgICBj
YXNlIENvbXBhcmVFcVB0cjoKKyAgICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQ6CiAgICAgICAgICAgICBicmVhazsKICNlbHNlCiAgICAgICAgIGRlZmF1bHQ6
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmggYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKaW5kZXggNjYzMDgxNTFkZGM1MDdkNDU3
MzM5Y2I1YmRmMGU3MzA4ZmQ1NzdkOS4uNWMzOWMxNzJjNjBlMDVjYzhmODQyMjNmZGU2MjhmZmFh
ZjU0YjhiNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdHcmFwaC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaApAQCAtNzMwLDEwICs3
MzAsOCBAQCBjbGFzcyBHcmFwaCA6IHB1YmxpYyB2aXJ0dWFsIFNjYW5uYWJsZSB7CiAgICAgICAg
IHJldHVybiB3YXRjaHBvaW50cygpLmlzV2F0Y2hlZChnbG9iYWxPYmplY3QtPmhhdmluZ0FCYWRU
aW1lV2F0Y2hwb2ludCgpKTsKICAgICB9CiAKLSAgICBib29sIGlzV2F0Y2hpbmdBcnJheUl0ZXJh
dG9yUHJvdG9jb2xXYXRjaHBvaW50KE5vZGUqIG5vZGUpCisgICAgYm9vbCBpc1dhdGNoaW5nR2xv
YmFsT2JqZWN0V2F0Y2hwb2ludChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzZXQpCiAgICAgewotICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0gZ2xvYmFsT2JqZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7Ci0gICAgICAg
IElubGluZVdhdGNocG9pbnRTZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclBy
b3RvY29sV2F0Y2hwb2ludCgpOwogICAgICAgICBpZiAod2F0Y2hwb2ludHMoKS5pc1dhdGNoZWQo
c2V0KSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC03NDksNiArNzQ3LDIwIEBAIGNs
YXNzIEdyYXBoIDogcHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKIAogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQorCisgICAgYm9vbCBpc1dhdGNoaW5nQXJyYXlJdGVyYXRvclByb3RvY29s
V2F0Y2hwb2ludChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQgPSBnbG9iYWxPYmplY3QtPmFycmF5SXRlcmF0
b3JQcm90b2NvbFdhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIGlzV2F0Y2hpbmdHbG9iYWxP
YmplY3RXYXRjaHBvaW50KGdsb2JhbE9iamVjdCwgc2V0KTsKKyAgICB9CisKKyAgICBib29sIGlz
V2F0Y2hpbmdOdW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoTm9kZSogbm9kZSkKKyAgICB7CisgICAg
ICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RGb3Iobm9kZS0+
b3JpZ2luLnNlbWFudGljKTsKKyAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgc2V0ID0gZ2xv
YmFsT2JqZWN0LT5udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoKTsKKyAgICAgICAgcmV0dXJuIGlz
V2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50KGdsb2JhbE9iamVjdCwgc2V0KTsKKyAgICB9
CiAgICAgCiAgICAgUHJvZmlsZXI6OkNvbXBpbGF0aW9uKiBjb21waWxhdGlvbigpIHsgcmV0dXJu
IG1fcGxhbi5jb21waWxhdGlvbi5nZXQoKTsgfQogICAgIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R05vZGUuaAppbmRleCBiZTU3NjJiYjcxYmUwN2FhYjUwNzg1YzQxZWNkYjYwOTFjNzA4OTMwLi4y
YjFkODY1ZDFlMTgzMDU1OTE3MTQ5MTA0OGZmNTc3MzM4ZGM3YzczIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR05vZGUuaApAQCAtNjkxLDYgKzY5MSwxNSBAQCBzdHJ1Y3QgTm9kZSB7CiAgICAg
ICAgIGNoaWxkcmVuLnNldENoaWxkMihFZGdlKCkpOwogICAgICAgICBtX29wSW5mbyA9IGNlbGw7
CiAgICAgfQorCisgICAgdm9pZCBjb252ZXJ0VG9OdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4
Q29uc3RhbnQoaW50MzJfdCByYWRpeCkKKyAgICB7CisgICAgICAgIEFTU0VSVChtX29wID09IE51
bWJlclRvU3RyaW5nV2l0aFJhZGl4KTsKKyAgICAgICAgQVNTRVJUKHJhZGl4ID49IDIgJiYgcmFk
aXggPD0gMzYpOworICAgICAgICBzZXRPcEFuZERlZmF1bHRGbGFncyhOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQpOworICAgICAgICBjaGlsZHJlbi5zZXRDaGlsZDIoRWRnZSgp
KTsKKyAgICAgICAgbV9vcEluZm8gPSByYWRpeDsKKyAgICB9CiAgICAgCiAgICAgdm9pZCBjb252
ZXJ0VG9EaXJlY3RDYWxsKEZyb3plblZhbHVlKik7CiAKQEAgLTI1ODMsNiArMjU5MiwxNyBAQCBz
dHJ1Y3QgTm9kZSB7CiAgICAgICAgIHJldHVybiBtX29wSW5mby5hczxCdWNrZXRPd25lclR5cGU+
KCk7CiAgICAgfQogCisgICAgYm9vbCBoYXNWYWxpZFJhZGl4Q29uc3RhbnQoKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIG9wKCkgPT0gTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50
OworICAgIH0KKworICAgIGludDMyX3QgdmFsaWRSYWRpeENvbnN0YW50KCkKKyAgICB7CisgICAg
ICAgIEFTU0VSVChoYXNWYWxpZFJhZGl4Q29uc3RhbnQoKSk7CisgICAgICAgIHJldHVybiBtX29w
SW5mby5hczxpbnQzMl90PigpOworICAgIH0KKwogICAgIHVpbnQzMl90IGVycm9yVHlwZSgpCiAg
ICAgewogICAgICAgICBBU1NFUlQob3AoKSA9PSBUaHJvd1N0YXRpY0Vycm9yKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAppbmRleCBlOWYwNzZjOTM0MGZhNDg4NmIxOTli
OTdlNDI3YTliMDBhNzZiN2M2Li5hMmNiODIzMzMwMWNlNmNjMTlhZGUxZTBjNDIwYzJlMmJjNzcy
M2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05vZGVUeXBlLmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2RlVHlwZS5oCkBAIC0zNTQsNiAr
MzU0LDcgQEAgbmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBERkcgewogICAgIG1hY3JvKENhbGxP
YmplY3RDb25zdHJ1Y3RvciwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oQ2FsbFN0cmluZ0Nv
bnN0cnVjdG9yLCBOb2RlUmVzdWx0SlMgfCBOb2RlTXVzdEdlbmVyYXRlKSBcCiAgICAgbWFjcm8o
TnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgsIE5vZGVSZXN1bHRKUyB8IE5vZGVNdXN0R2VuZXJhdGUp
IFwKKyAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQsIE5vZGVS
ZXN1bHRKUykgXAogICAgIG1hY3JvKE5ld1N0cmluZ09iamVjdCwgTm9kZVJlc3VsdEpTKSBcCiAg
ICAgbWFjcm8oTWFrZVJvcGUsIE5vZGVSZXN1bHRKUykgXAogICAgIG1hY3JvKEluLCBOb2RlUmVz
dWx0Qm9vbGVhbiB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHUHJlZGljdGlvblByb3BhZ2F0aW9uUGhhc2UuY3BwIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKaW5k
ZXggZTU1YjFmNzkyMWY2NjY1YmZmMDk3ZjZjYzlkMmVjNWIyODVhNDVmNi4uMTA4ODk5NTYxZDFk
ODdjZjBkZDc2YTE0YzJkYTYxZmMwYmQ4ZjZhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAKQEAg
LTkxMiw2ICs5MTIsNyBAQCBjbGFzcyBQcmVkaWN0aW9uUHJvcGFnYXRpb25QaGFzZSA6IHB1Ymxp
YyBQaGFzZSB7CiAgICAgICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgogICAgICAgICBj
YXNlIFRvU3RyaW5nOgogICAgICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAg
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAgICAgICAg
Y2FzZSBNYWtlUm9wZToKICAgICAgICAgY2FzZSBTdHJDYXQ6IHsKICAgICAgICAgICAgIHNldFBy
ZWRpY3Rpb24oU3BlY1N0cmluZyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2Fm
ZVRvRXhlY3V0ZS5oCmluZGV4IGFkNzZiMzNiMGZhYWYxODdkYjQ2YTMwODkyZjQ3ZmNhN2UzYjQ0
OWQuLmVhZTM3NGIyMzMyNjdhYzNmZmI5NWNkN2I0YWRkYjQ0YzkzZDY0OGQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5oCkBAIC0yODgsNiArMjg4LDcg
QEAgYm9vbCBzYWZlVG9FeGVjdXRlKEFic3RyYWN0U3RhdGVUeXBlJiBzdGF0ZSwgR3JhcGgmIGdy
YXBoLCBOb2RlKiBub2RlKQogICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgY2FzZSBUb051bWJlcjoK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgIGNhc2UgU2V0RnVuY3Rpb25OYW1lOgogICAg
IGNhc2UgU3RyQ2F0OgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0cnVjdG9yOgpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcAppbmRleCBjMjAyOTA4
MjMwNzRiMDZjMWEwMzQ5YWFjZjRkODExN2Q4ODE3MjJlLi5kYjhjMDM2YzBhMjljYzRhYzViYzQ5
M2QyYWJkZTFmYjlhNGYzZjE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR1NwZWN1bGF0aXZlSklULmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1NwZWN1bGF0aXZlSklULmNwcApAQCAtODM1Myw3ICs4MzUzLDcgQEAgdm9pZCBTcGVjdWxhdGl2
ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSogbm9kZSkK
ICAgICBjYXNlIEludDMyVXNlOgogICAgIGNhc2UgSW50NTJSZXBVc2U6CiAgICAgY2FzZSBEb3Vi
bGVSZXBVc2U6Ci0gICAgICAgIGNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVjdG9y
T25OdW1iZXIobm9kZSk7CisgICAgICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQobm9kZSwgMTApOwogICAgICAgICByZXR1cm47CiAKICAgICBkZWZhdWx0OgpA
QCAtODQzNCwxMSArODQzNCwxNiBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJp
bmdPckNhbGxTdHJpbmdDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIH0KIH0KIAotdm9pZCBT
cGVjdWxhdGl2ZUpJVDo6Y29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51
bWJlcihOb2RlKiBub2RlKQordm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZU51bWJlclRvU3Ry
aW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKiBub2RlKQoreworICAgIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQobm9kZSwgbm9kZS0+dmFsaWRSYWRpeENv
bnN0YW50KCkpOworfQorCit2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqIG5vZGUsIGludDMyX3QgcmFkaXgpCiB7CiAg
ICAgYXV0byBjYWxsVG9TdHJpbmcgPSBbJl0gKGF1dG8gb3BlcmF0aW9uLCBHUFJSZWcgcmVzdWx0
R1BSLCBhdXRvIHZhbHVlUmVnKSB7CiAgICAgICAgIGZsdXNoUmVnaXN0ZXJzKCk7Ci0gICAgICAg
IGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIHZhbHVlUmVnLCBDQ2FsbEhlbHBl
cnM6OlRydXN0ZWRJbW0zMigxMCkpOworICAgICAgICBjYWxsT3BlcmF0aW9uKG9wZXJhdGlvbiwg
cmVzdWx0R1BSLCB2YWx1ZVJlZywgVHJ1c3RlZEltbTMyKHJhZGl4KSk7CiAgICAgICAgIG1faml0
LmV4Y2VwdGlvbkNoZWNrKCk7CiAgICAgICAgIGNlbGxSZXN1bHQocmVzdWx0R1BSLCBub2RlKTsK
ICAgICB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxh
dGl2ZUpJVC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVC5o
CmluZGV4IGYzNGZkNDZjMjg4ZDRjNzIyZjM2MGVjZWJhNDA0ZjQ5M2Y4ZjRkYjcuLjMyOGNiYjEw
ODFjN2RkNWQyYWVjNjlhNTY1ZGQ3YmM4YTFkMDI3YTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKQEAgLTI3NjYsOCArMjc2Niw5IEBAIGNsYXNz
IFNwZWN1bGF0aXZlSklUIHsKICAgICB2b2lkIGVtaXRTd2l0Y2goTm9kZSopOwogICAgIAogICAg
IHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3IoTm9kZSopOwotICAg
IHZvaWQgY29tcGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcihOb2Rl
Kik7CiAgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgoTm9kZSopOworICAg
IHZvaWQgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChOb2RlKik7
CisgICAgdm9pZCBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5v
ZGUqLCBpbnQzMl90IHJhZGl4KTsKICAgICB2b2lkIGNvbXBpbGVOZXdTdHJpbmdPYmplY3QoTm9k
ZSopOwogICAgIAogICAgIHZvaWQgY29tcGlsZU5ld1R5cGVkQXJyYXkoTm9kZSopOwpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHAK
aW5kZXggODQ2NWRlMjcwZjhiMmY0NTcxNTRiMzg2MjE1ZWIxOWY0NTVkNjdjZC4uODA3MTBhZWE2
ODFmNzA1MTZjMDhkODljODA4ZGRkOTA4Y2MwMGNlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwCkBAIC0yODQzLDYgKzI4
NDMsMTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAg
ICBicmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudDogeworICAgICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENv
bnN0YW50KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIEdldEJ5VmFs
V2l0aFRoaXM6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJhbmQgYmFzZSh0aGlzLCBub2RlLT5jaGls
ZDEoKSk7CiAgICAgICAgIEpTVmFsdWVSZWdzIGJhc2VSZWdzID0gYmFzZS5qc1ZhbHVlUmVncygp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJ
VDY0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQ2NC5j
cHAKaW5kZXggYzJmZGNlOWI5Y2IwOGNiNDM4ODcyN2MwZjAxZTVmNmQ3MGUxZjNkOC4uMzA5YzQ3
Yjk1YTYwNGQ0NWUwMTk1YzkyMDA3OTAyM2QyMzJhNzhmMCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwCkBAIC01MzAzLDYgKzUzMDMs
MTEgQEAgdm9pZCBTcGVjdWxhdGl2ZUpJVDo6Y29tcGlsZShOb2RlKiBub2RlKQogICAgICAgICBi
cmVhazsKICAgICB9CiAKKyAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25z
dGFudDogeworICAgICAgICBjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0
YW50KG5vZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICBjYXNlIElzT2JqZWN0OiB7
CiAgICAgICAgIEpTVmFsdWVPcGVyYW5kIHZhbHVlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAg
ICAgICAgR1BSVGVtcG9yYXJ5IHJlc3VsdCh0aGlzLCBSZXVzZSwgdmFsdWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5j
cHAKaW5kZXggNjVhZmI0YWU4OTVhZDQ4N2JmNWZhYmVjZGZlYjU5NzhlY2VjMDA0ZC4uNjAwOTJi
NjRlZGMyYzJmOTQ4OWU4MzdiZmM1NDcwODkwOGQzNGFjOCAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCkBAIC00
MjYsNiArNDI2LDE5IEBAIGNsYXNzIFN0cmVuZ3RoUmVkdWN0aW9uUGhhc2UgOiBwdWJsaWMgUGhh
c2UgewogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KIAorICAgICAgICBjYXNlIE51bWJl
clRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDogeworICAgICAgICAgICAgRWRnZSYgY2hp
bGQxID0gbV9ub2RlLT5jaGlsZDEoKTsKKyAgICAgICAgICAgIGlmIChjaGlsZDEtPmhhc0NvbnN0
YW50KCkpIHsKKyAgICAgICAgICAgICAgICBKU1ZhbHVlIHZhbHVlID0gY2hpbGQxLT5jb25zdGFu
dCgpLT52YWx1ZSgpOworICAgICAgICAgICAgICAgIGlmICh2YWx1ZSAmJiB2YWx1ZS5pc051bWJl
cigpKSB7CisgICAgICAgICAgICAgICAgICAgIFN0cmluZyByZXN1bHQgPSB0b1N0cmluZ1dpdGhS
YWRpeCh2YWx1ZS5hc051bWJlcigpLCBtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKTsKKyAg
ICAgICAgICAgICAgICAgICAgbV9ub2RlLT5jb252ZXJ0VG9MYXp5SlNDb25zdGFudChtX2dyYXBo
LCBMYXp5SlNWYWx1ZTo6bmV3U3RyaW5nKG1fZ3JhcGgsIHJlc3VsdCkpOworICAgICAgICAgICAg
ICAgICAgICBtX2NoYW5nZWQgPSB0cnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
IH0KKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKICAgICAgICAgY2FzZSBHZXRBcnJh
eUxlbmd0aDogewogICAgICAgICAgICAgaWYgKG1fbm9kZS0+YXJyYXlNb2RlKCkudHlwZSgpID09
IEFycmF5OjpHZW5lcmljCiAgICAgICAgICAgICAgICAgfHwgbV9ub2RlLT5hcnJheU1vZGUoKS50
eXBlKCkgPT0gQXJyYXk6OlN0cmluZykgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9G
VExDYXBhYmlsaXRpZXMuY3BwCmluZGV4IGMyMTVhNjMyOTYxZjg2ZTFiZTYyOGJiMWU5Yzk2YjY4
Y2JmZWYxMzUuLmQxZmE2MzkyOGMxYzI0ZmFhZjEyZjY2YzdkZWJmMDE1NjliYWJjNWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKQEAgLTI4NCw2
ICsyODQsNyBAQCBpbmxpbmUgQ2FwYWJpbGl0eUxldmVsIGNhbkNvbXBpbGUoTm9kZSogbm9kZSkK
ICAgICBjYXNlIERlZmluZUFjY2Vzc29yUHJvcGVydHk6CiAgICAgY2FzZSBUb0xvd2VyQ2FzZToK
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgIGNhc2UgQ2hlY2tTdWJDbGFzczoKICAgICBj
YXNlIENhbGxET006CiAgICAgY2FzZSBDYWxsRE9NR2V0dGVyOgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCmluZGV4IGU3YjI0NjJhYjBhMzk5MTM1YzVi
YzMxMWZlN2ViYTcxZjdiZjQ3ZjYuLjEyYzA0M2U2ZTAzYmMxOGUxYzgxZDJjZWViOTJkNzk4Yjc0
ZGMwYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdU
b0IzLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZHVG9CMy5j
cHAKQEAgLTExMjMsNiArMTEyMyw5IEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAgICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CiAgICAgICAgICAgICBjb21waWxlTnVtYmVyVG9T
dHJpbmdXaXRoUmFkaXgoKTsKICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIE51bWJl
clRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKKyAgICAgICAgICAgIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoKTsKKyAgICAgICAgICAgIGJyZWFrOwog
ICAgICAgICBjYXNlIENoZWNrU3ViQ2xhc3M6CiAgICAgICAgICAgICBjb21waWxlQ2hlY2tTdWJD
bGFzcygpOwogICAgICAgICAgICAgYnJlYWs7CkBAIC0xMDQxOSw2ICsxMDQyMiwyMyBAQCBjbGFz
cyBMb3dlckRGR1RvQjMgewogICAgICAgICB9CiAgICAgfQogCisgICAgdm9pZCBjb21waWxlTnVt
YmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KCkKKyAgICB7CisgICAgICAgIHN3aXRj
aCAobV9ub2RlLT5jaGlsZDEoKS51c2VLaW5kKCkpIHsKKyAgICAgICAgY2FzZSBJbnQzMlVzZToK
KyAgICAgICAgICAgIHNldEpTVmFsdWUodm1DYWxsKHBvaW50ZXJUeXBlKCksIG1fb3V0Lm9wZXJh
dGlvbihvcGVyYXRpb25JbnQzMlRvU3RyaW5nV2l0aFZhbGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwg
bG93SW50MzIobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIobV9ub2RlLT52YWxp
ZFJhZGl4Q29uc3RhbnQoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElu
dDUyUmVwVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwg
bV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludDUyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1f
Y2FsbEZyYW1lLCBsb3dTdHJpY3RJbnQ1MihtX25vZGUtPmNoaWxkMSgpKSwgbV9vdXQuY29uc3RJ
bnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOworICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIGNhc2UgRG91YmxlUmVwVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1ZSh2bUNh
bGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkRvdWJsZVRvU3RyaW5n
V2l0aFZhbGlkUmFkaXgpLCBtX2NhbGxGcmFtZSwgbG93RG91YmxlKG1fbm9kZS0+Y2hpbGQxKCkp
LCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpKSk7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIH0KKyAgICB9CisKICAgICB2b2lkIGNvbXBpbGVS
ZXNvbHZlU2NvcGVGb3JIb2lzdGluZ0Z1bmNEZWNsSW5FdmFsKCkKICAgICB7CiAgICAgICAgIFVu
aXF1ZWRTdHJpbmdJbXBsKiB1aWQgPSBtX2dyYXBoLmlkZW50aWZpZXJzKClbbV9ub2RlLT5pZGVu
dGlmaWVyTnVtYmVyKCldOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNH
bG9iYWxPYmplY3QuY3BwCmluZGV4IGY5MTZhNDZiYTg1YzE1NDExMDNhYjE2MTI0YzZkMWI3NjZm
MTdjYjYuLjBjM2E3NjVlYzBlYzc4N2RlNGEzMWIzYWZhODE0NTgxN2JhYzBhNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTMy
NSw2ICszMjUsNyBAQCBKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSwgY29uc3QgR2xvYmFsT2JqZWN0TQogICAgICwgbV9tYXBTZXRXYXRj
aHBvaW50KElzV2F0Y2hlZCkKICAgICAsIG1fc2V0QWRkV2F0Y2hwb2ludChJc1dhdGNoZWQpCiAg
ICAgLCBtX2FycmF5U3BlY2llc1dhdGNocG9pbnQoQ2xlYXJXYXRjaHBvaW50KQorICAgICwgbV9u
dW1iZXJUb1N0cmluZ1dhdGNocG9pbnQoSXNXYXRjaGVkKQogICAgICwgbV90ZW1wbGF0ZVJlZ2lz
dHJ5KHZtKQogICAgICwgbV9ydW50aW1lRmxhZ3MoKQogICAgICwgbV9nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZShnbG9iYWxPYmplY3RNZXRob2RUYWJsZSA/IGdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IDogJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCkBAIC0xMDE1LDYgKzEwMTYsMTMgQEAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPiBqc05hbWUsIGxv
d2VyTmFtZSAjIyBDb25zdHJ1Y3QKICAgICAgICAgICAgIG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hw
b2ludCA9IHN0ZDo6bWFrZV91bmlxdWU8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+KHZtLCBjb25kaXRpb24sIG1fc2V0QWRkV2F0Y2hw
b2ludCk7CiAgICAgICAgICAgICBtX3NldFByb3RvdHlwZUFkZFdhdGNocG9pbnQtPmluc3RhbGwo
KTsKICAgICAgICAgfQorCisgICAgICAgIHsKKyAgICAgICAgICAgIE9iamVjdFByb3BlcnR5Q29u
ZGl0aW9uIGNvbmRpdGlvbiA9IHNldHVwQWRhcHRpdmVXYXRjaHBvaW50KG51bWJlclByb3RvdHlw
ZSgpLCBtX3ZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKTsKKyAgICAgICAgICAgIG1fbnVtYmVy
UHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1ZTxPYmplY3RQcm9w
ZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4odm0sIGNv
bmRpdGlvbiwgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQpOworICAgICAgICAgICAgbV9udW1i
ZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQtPmluc3RhbGwoKTsKKyAgICAgICAgICAgIG1f
bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uLnNldCh2bSwgdGhpcywganNDYXN0PEpTRnVuY3Rp
b24qPihudW1iZXJQcm90b3R5cGUoKS0+Z2V0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT50
b1N0cmluZykpKTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIHJlc2V0UHJvdG90eXBlKHZtLCBn
ZXRQcm90b3R5cGVEaXJlY3QoKSk7CkBAIC0xMjY0LDYgKzEyNzIsNyBAQCB2b2lkIEpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3Ip
CiAgICAgdGhpc09iamVjdC0+bV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24udmlzaXQodmlzaXRv
cik7CiAgICAgdGhpc09iamVjdC0+bV9wcm9taXNlUmVzb2x2ZUZ1bmN0aW9uLnZpc2l0KHZpc2l0
b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fb2JqZWN0UHJvdG9WYWx1ZU9m
RnVuY3Rpb24pOworICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVtYmVyUHJvdG9U
b1N0cmluZ0Z1bmN0aW9uKTsKICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX25ld1By
b21pc2VDYXBhYmlsaXR5RnVuY3Rpb24pOwogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3Qt
Pm1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rpb24pOwogICAgIHRoaXNPYmpl
Y3QtPm1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXIudmlzaXQodmlzaXRvcik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCA2YzI5ZDFh
MWE4OTUwMjg4NDM5NzYyMWZmM2I3NTMyNjA3NGI1YjI0Li4xZmIwZTk2NWEzNWViZjJlMTQwZWEx
MDQ3YWQ4NTI5MDNlZGM3YTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmgKQEAgLTI2OSw2ICsyNjksNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVj
dCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIEpTRnVuY3Rpb24+IG1faXRlcmF0b3JQcm90b2NvbEZ1bmN0aW9uOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5jdGlvbj4gbV9wcm9taXNlUmVz
b2x2ZUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX29iamVjdFByb3Rv
VmFsdWVPZkZ1bmN0aW9uOworICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX251bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbjsKICAgICBXcml0ZUJhcnJpZXI8SlNGdW5jdGlvbj4gbV9uZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uOwogICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBt
X2Z1bmN0aW9uUHJvdG9IYXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgR2V0dGVyU2V0dGVyPiBtX3Rocm93VHlwZUVycm9yR2V0dGVyU2V0
dGVyOwpAQCAtNDEzLDYgKzQxNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIElubGluZVdhdGNocG9pbnRTZXQmIG1hcFNl
dFdhdGNocG9pbnQoKSB7IHJldHVybiBtX21hcFNldFdhdGNocG9pbnQ7IH0KICAgICBJbmxpbmVX
YXRjaHBvaW50U2V0JiBzZXRBZGRXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9zZXRBZGRXYXRjaHBv
aW50OyB9CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgYXJyYXlTcGVjaWVzV2F0Y2hwb2ludCgp
IHsgcmV0dXJuIG1fYXJyYXlTcGVjaWVzV2F0Y2hwb2ludDsgfQorICAgIElubGluZVdhdGNocG9p
bnRTZXQmIG51bWJlclRvU3RyaW5nV2F0Y2hwb2ludCgpIHsgcmV0dXJuIG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50OyB9CiAgICAgLy8gSWYgdGhpcyBoYXNuJ3QgYmVlbiBpbnZhbGlkYXRlZCwg
aXQgbWVhbnMgdGhlIGFycmF5IGl0ZXJhdG9yIHByb3RvY29sCiAgICAgLy8gaXMgbm90IG9ic2Vy
dmFibGUgdG8gdXNlciBjb2RlIHlldC4KICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlJ
dGVyYXRvclByb3RvY29sV2F0Y2hwb2ludDsKQEAgLTQyMiw2ICs0MjQsNyBAQCBjbGFzcyBKU0ds
b2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBJbmxp
bmVXYXRjaHBvaW50U2V0IG1fbWFwU2V0V2F0Y2hwb2ludDsKICAgICBJbmxpbmVXYXRjaHBvaW50
U2V0IG1fc2V0QWRkV2F0Y2hwb2ludDsKICAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fYXJyYXlT
cGVjaWVzV2F0Y2hwb2ludDsKKyAgICBJbmxpbmVXYXRjaHBvaW50U2V0IG1fbnVtYmVyVG9TdHJp
bmdXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFk
YXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9hcnJheVByb3RvdHlwZVN5
bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVy
dHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fYXJyYXlJ
dGVyYXRvclByb3RvdHlwZU5leHQ7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5
Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+PiBtX21hcFByb3Rv
dHlwZVN5bWJvbEl0ZXJhdG9yV2F0Y2hwb2ludDsKQEAgLTQzMiw2ICs0MzUsNyBAQCBjbGFzcyBK
U0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKICAgICBz
dGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8SW5s
aW5lV2F0Y2hwb2ludFNldD4+IG1fc3RyaW5nSXRlcmF0b3JQcm90b3R5cGVOZXh0V2F0Y2hwb2lu
dDsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNo
cG9pbnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbWFwUHJvdG90eXBlU2V0V2F0Y2hwb2ludDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fc2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludDsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9pbnQ8
SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbnVtYmVyUHJvdG90eXBlVG9TdHJpbmdXYXRjaHBvaW50
OwogCiAgICAgYm9vbCBpc0FycmF5UHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25P
YnNlcnZhYmxlKCk7CiAgICAgYm9vbCBpc01hcFByb3RvdHlwZUl0ZXJhdG9yUHJvdG9jb2xGYXN0
QW5kTm9uT2JzZXJ2YWJsZSgpOwpAQCAtNTQyLDYgKzU0Niw3IEBAIGNsYXNzIEpTR2xvYmFsT2Jq
ZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIEpTRnVuY3Rpb24q
IGl0ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1faXRlcmF0b3JQcm90
b2NvbEZ1bmN0aW9uLmdldCh0aGlzKTsgfQogICAgIEpTRnVuY3Rpb24qIHByb21pc2VSZXNvbHZl
RnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb24uZ2V0KHRo
aXMpOyB9CiAgICAgSlNGdW5jdGlvbiogb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX29iamVjdFByb3RvVmFsdWVPZkZ1bmN0aW9uLmdldCgpOyB9CisgICAgSlNG
dW5jdGlvbiogbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9u
dW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24uZ2V0KCk7IH0KICAgICBKU0Z1bmN0aW9uKiBuZXdQ
cm9taXNlQ2FwYWJpbGl0eUZ1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9uZXdQcm9taXNlQ2Fw
YWJpbGl0eUZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNGdW5jdGlvbiogZnVuY3Rpb25Qcm90b0hh
c0luc3RhbmNlU3ltYm9sRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX2Z1bmN0aW9uUHJvdG9I
YXNJbnN0YW5jZVN5bWJvbEZ1bmN0aW9uLmdldCgpOyB9CiAgICAgSlNPYmplY3QqIHJlZ0V4cFBy
b3RvRXhlY0Z1bmN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9yZWdFeHBQcm90b0V4ZWMuZ2V0KCk7
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUu
Y3BwCmluZGV4IDBhNzQ0MWJlMTI5NDZkZDQzN2ZkNTMyZmYwYTFlYzlhYzNlMmJiMDcuLmZkYTlj
ZDE2NDA2Mjg5OTg1ZmEwODA3NWQwOTFlMDA4YzJhMGIxZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcApAQCAtNTgsNyArNTgsNiBA
QCBjb25zdCBDbGFzc0luZm8gTnVtYmVyUHJvdG90eXBlOjpzX2luZm8gPSB7ICJOdW1iZXIiLCAm
TnVtYmVyT2JqZWN0OjpzX2luZm8sICZudQogCiAvKiBTb3VyY2UgZm9yIE51bWJlclByb3RvdHlw
ZS5sdXQuaAogQGJlZ2luIG51bWJlclByb3RvdHlwZVRhYmxlCi0gIHRvU3RyaW5nICAgICAgICAg
IG51bWJlclByb3RvRnVuY1RvU3RyaW5nICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMSBOdW1i
ZXJQcm90b3R5cGVUb1N0cmluZ0ludHJpbnNpYwogICB0b0xvY2FsZVN0cmluZyAgICBudW1iZXJQ
cm90b0Z1bmNUb0xvY2FsZVN0cmluZyAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdmFsdWVPZiAg
ICAgICAgICAgbnVtYmVyUHJvdG9GdW5jVmFsdWVPZiAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAwCiAgIHRvRml4ZWQgICAgICAgICAgIG51bWJlclByb3RvRnVuY1RvRml4ZWQgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQpAQCAtNzksMTAgKzc4LDkgQEAgdm9pZCBOdW1iZXJQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkK
ICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CiAgICAgc2V0SW50ZXJuYWxWYWx1ZSh2bSwg
anNOdW1iZXIoMCkpOwogCisgICAgSlNDX05BVElWRV9JTlRSSU5TSUNfRlVOQ1RJT05fV0lUSE9V
VF9UUkFOU0lUSU9OKHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nLCBudW1iZXJQcm90b0Z1bmNU
b1N0cmluZywgRG9udEVudW0sIDEsIE51bWJlclByb3RvdHlwZVRvU3RyaW5nSW50cmluc2ljKTsK
ICNpZiBFTkFCTEUoSU5UTCkKICAgICBKU0NfQlVJTFRJTl9GVU5DVElPTl9XSVRIT1VUX1RSQU5T
SVRJT04oInRvTG9jYWxlU3RyaW5nIiwgbnVtYmVyUHJvdG90eXBlVG9Mb2NhbGVTdHJpbmdDb2Rl
R2VuZXJhdG9yLCBEb250RW51bSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShnbG9iYWxPYmpl
Y3QpOwogI2VuZGlmIC8vIEVOQUJMRShJTlRMKQogCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBp
bmZvKCkpKTsKQEAgLTE2NSw3ICsxNjMsNyBAQCBzdGF0aWMgaW5saW5lIGNoYXIqIGludDUyVG9T
dHJpbmdXaXRoUmFkaXgoY2hhciogc3RhcnRPZlJlc3VsdFN0cmluZywgaW50NjRfdCBpbgogICAg
IHJldHVybiBzdGFydE9mUmVzdWx0U3RyaW5nOwogfQogCi1zdGF0aWMgY2hhciogdG9TdHJpbmdX
aXRoUmFkaXgoUmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9yaWdpbmFsTnVtYmVyLCB1bnNp
Z25lZCByYWRpeCkKK3N0YXRpYyBjaGFyKiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKFJhZGl4
QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBvcmlnaW5hbE51bWJlciwgdW5zaWduZWQgcmFkaXgpCiB7
CiAgICAgQVNTRVJUKHN0ZDo6aXNmaW5pdGUob3JpZ2luYWxOdW1iZXIpKTsKICAgICBBU1NFUlQo
cmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CkBAIC0zNTksNyArMzU3LDcgQEAgc3RhdGljIGNo
YXIqIHRvU3RyaW5nV2l0aFJhZGl4KFJhZGl4QnVmZmVyJiBidWZmZXIsIGRvdWJsZSBvcmlnaW5h
bE51bWJlciwgdW5zaWcKICAgICByZXR1cm4gc3RhcnRPZlJlc3VsdFN0cmluZzsKIH0KIAotc3Rh
dGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRpeChpbnQzMl90IG51bWJlciwgdW5zaWduZWQgcmFk
aXgpCitzdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoaW50MzJfdCBudW1i
ZXIsIHVuc2lnbmVkIHJhZGl4KQogewogICAgIExDaGFyIGJ1ZlsxICsgMzJdOyAvLyBXb3JzdCBj
YXNlIGlzIHJhZGl4ID09IDIsIHdoaWNoIGdpdmVzIHVzIDMyIGRpZ2l0cyArIHNpZ24uCiAgICAg
TENoYXIqIGVuZCA9IHN0ZDo6ZW5kKGJ1Zik7CkBAIC0zODQsNiArMzgyLDIxIEBAIHN0YXRpYyBT
dHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoaW50MzJfdCBudW1iZXIsIHVuc2lnbmVkIHJhZGl4KQog
ICAgIHJldHVybiBTdHJpbmcocCwgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGVuZCAtIHApKTsKIH0K
IAorU3RyaW5nIHRvU3RyaW5nV2l0aFJhZGl4KGRvdWJsZSBkb3VibGVWYWx1ZSwgaW50MzJfdCBy
YWRpeCkKK3sKKyAgICBBU1NFUlQoIShyYWRpeCA8IDIgfHwgcmFkaXggPiAzNikpOworCisgICAg
aW50MzJfdCBpbnRlZ2VyVmFsdWUgPSBzdGF0aWNfY2FzdDxpbnQzMl90Pihkb3VibGVWYWx1ZSk7
CisgICAgaWYgKGludGVnZXJWYWx1ZSA9PSBkb3VibGVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIHRv
U3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoaW50ZWdlclZhbHVlLCByYWRpeCk7CisKKyAgICBpZiAo
cmFkaXggPT0gMTAgfHwgIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKQorICAgICAgICByZXR1
cm4gU3RyaW5nOjpudW1iZXJUb1N0cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpOworCisgICAg
UmFkaXhCdWZmZXIgYnVmZmVyOworICAgIHJldHVybiB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFs
KGJ1ZmZlciwgZG91YmxlVmFsdWUsIHJhZGl4KTsKK30KKwogLy8gdG9FeHBvbmVudGlhbCBjb252
ZXJ0cyBhIG51bWJlciB0byBhIHN0cmluZywgYWx3YXlzIGZvcm1hdHRpbmcgYXMgYW4gZXhwb25l
bnRpYWwuCiAvLyBUaGlzIG1ldGhvZCB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudCBzcGVjaWZ5
aW5nIGEgbnVtYmVyIG9mICpkZWNpbWFsIHBsYWNlcyoKIC8vIHRvIHJvdW5kIHRoZSBzaWduaWZp
Y2FuZCB0byAob3IsIHB1dCBhbm90aGVyIHdheSwgdGhpcyBtZXRob2Qgb3B0aW9uYWxseSByb3Vu
ZHMKQEAgLTUyMCw3ICs1MzMsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0cmluZyogaW50
MzJUb1N0cmluZ0ludGVybmFsKFZNJiB2bSwgaW50MzJfdCB2YWx1ZSwgaW50MwogICAgIGlmIChy
YWRpeCA9PSAxMCkKICAgICAgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHZtLm51
bWVyaWNTdHJpbmdzLmFkZCh2YWx1ZSkpOwogCi0gICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmlu
Zygmdm0sIHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLCByYWRpeCkpOworICAgIHJldHVybiBqc05v
bnRyaXZpYWxTdHJpbmcoJnZtLCB0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKHZhbHVlLCByYWRp
eCkpOwogCiB9CiAKQEAgLTUzOSw3ICs1NTIsNyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBKU1N0
cmluZyogbnVtYmVyVG9TdHJpbmdJbnRlcm5hbChWTSYgdm0sIGRvdWJsZSBkb3VibGVWYWx1ZQog
ICAgICAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgU3RyaW5nOjpudW1iZXJUb1N0
cmluZ0VDTUFTY3JpcHQoZG91YmxlVmFsdWUpKTsKIAogICAgIFJhZGl4QnVmZmVyIGJ1ZmZlcjsK
LSAgICByZXR1cm4ganNTdHJpbmcoJnZtLCB0b1N0cmluZ1dpdGhSYWRpeChidWZmZXIsIGRvdWJs
ZVZhbHVlLCByYWRpeCkpOworICAgIHJldHVybiBqc1N0cmluZygmdm0sIHRvU3RyaW5nV2l0aFJh
ZGl4SW50ZXJuYWwoYnVmZmVyLCBkb3VibGVWYWx1ZSwgcmFkaXgpKTsKIH0KIAogSlNTdHJpbmcq
IGludDMyVG9TdHJpbmcoVk0mIHZtLCBpbnQzMl90IHZhbHVlLCBpbnQzMl90IHJhZGl4KQpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAppbmRleCAz
YzA2OWNiMDFiMTIyZTY2YTNlZTk4Njc0NDUzMTEzNTUwNmQzMzMzLi4wMzliMGQ1OWQxZWM1YmQz
NWE1YWMyZmFmNTExMDE3YWFhYjU4YWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9OdW1iZXJQcm90b3R5cGUuaApAQCAtNTQsNSArNTQsNiBAQCBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIG51bWJlclByb3RvRnVuY1ZhbHVlT2YoRXhlY1N0YXRlKik7CiBKU1N0
cmluZyogaW50MzJUb1N0cmluZyhWTSYsIGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwog
SlNTdHJpbmcqIGludDUyVG9TdHJpbmcoVk0mLCBpbnQ2NF90IHZhbHVlLCBpbnQzMl90IHJhZGl4
KTsKIEpTU3RyaW5nKiBudW1iZXJUb1N0cmluZyhWTSYsIGRvdWJsZSB2YWx1ZSwgaW50MzJfdCBy
YWRpeCk7CitTdHJpbmcgdG9TdHJpbmdXaXRoUmFkaXgoZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQz
Ml90IHJhZGl4KTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0No
YW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDFiYTU4NmE2NTEyOWI3YzQ2NjhkMmNm
YTAyNzljNmMwMTRmOWQzN2UuLjE2MDYzMjRlZTJjY2IyY2IyYWM0NGNlM2JhMDllNTAyOTVhYmJj
YTQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDUgKzEsMzUgQEAKIDIwMTctMDktMDIgIFl1c3VrZSBTdXp1a2kgIDx1dGF0YW5lLnRl
YUBnbWFpbC5jb20+CiAKKyAgICAgICAgW0RGR11bRlRMXSBFZmZpY2llbnRseSBleGVjdXRlIG51
bWJlciN0b1N0cmluZygpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzAwMDcKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKwor
ICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVj
dGlvbi5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBtaWNyb2JlbmNobWFy
a3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LTEwLmpzOiBBZGRlZC4KKyAgICAgICAgKHRl
c3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFk
aXgtY3NlLmpzOiBBZGRlZC4KKyAgICAgICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2ht
YXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXguanM6IEFkZGVkLgorICAgICAgICAodGVz
dCk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9u
LmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorICAgICAg
ICAqIHN0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtMTAuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL251bWJl
ci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUp
OgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0
aC1yYWRpeC1pbnZhbGlkLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAg
ICAgKiBzdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHRlc3QpOgorCisyMDE3LTA5LTAyICBZdXN1a2UgU3V6
dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgorCiAgICAgICAgIFtERkddIFJlbGF4IGFyaXR5
IHJlcXVpcmVtZW50CiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNzU1MjMKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVy
LXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rpb24uanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJr
cy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZTcw
MDk1OTkyMWJhMWI3OTEzZTkwZDU2MzhkY2RmYTE5YWFmNWY2Ci0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rp
b24uanMKQEAgLTAsMCArMSw5IEBACitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICB2YXIgdGFyZ2V0
ID0gNDI7CisgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZygxNik7Cit9Citub0lubGluZSh0ZXN0
KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgt
MTAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFk
aXgtMTAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwODNjYjRiNmZiYWJlNjdmZGY1YzEzMmQwZTVkNDkwYzVm
ODFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10
by1zdHJpbmctd2l0aC1yYWRpeC0xMC5qcwpAQCAtMCwwICsxLDEwIEBACitmdW5jdGlvbiB0ZXN0
KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIHZhciByZXN1
bHQgPSBpLnRvU3RyaW5nKDEwKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorbm9JbmxpbmUodGVz
dCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LWNzZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1y
YWRpeC1jc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZiYzE1MmVhODcwOTMzZDcwZTMwOGZjNTNkNDFhZDZm
MmZjODZhMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJl
ci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKQEAgLTAsMCArMSwxNCBAQAorZnVuY3Rpb24g
dGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgICAgICBp
LnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIGkudG9TdHJp
bmcoMTYpOworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7
CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWUzOyAr
K2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVt
YmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVt
YmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAyMTMwMjBiODVlYjE3MWY1
NzAwZjBkMWRhZmEzN2ZiNDA2MzZjYWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21pY3Jv
YmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXguanMKQEAgLTAsMCArMSwxNiBA
QAorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxMDsgKytpKSB7
CisgICAgICAgIHZhciByZXN1bHQgPSAnJzsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmco
Mik7CisgICAgICAgIHJlc3VsdCArPSBpLnRvU3RyaW5nKDQpOworICAgICAgICByZXN1bHQgKz0g
aS50b1N0cmluZyg4KTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoMTYpOworICAgICAg
ICByZXN1bHQgKz0gaS50b1N0cmluZygzMik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9
Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkKKyAgICB0
ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXN0cmVu
Z3RoLXJlZHVjdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctc3RyZW5n
dGgtcmVkdWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDk5M2YzMWNhM2NlMzc1OTcxNjZkMTkwYzg0
MWUzMzc5ZGVjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8t
c3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpAQCAtMCwwICsxLDE0IEBACitmdW5jdGlvbiBz
aG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQp
CisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsgYWN0dWFsKTsKK30KKwor
ZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IDQyOworICAgIHJldHVybiB0YXJn
ZXQudG9TdHJpbmcoMTYpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBp
IDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgpLCBgMmFgKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMC5qcyBiL0pTVGVzdHMv
c3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMC5qcwpuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iZjhm
NmEwZDBkNWVmOThjOTNiMjRmY2U2MmVhODc0NWJiNzdmMDBkCi0tLSAvZGV2L251bGwKKysrIGIv
SlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LTEwLmpzCkBAIC0wLDAg
KzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6
ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAgICAgIHNob3VsZEJlKGku
dG9TdHJpbmcoMTApLCAiIiArIGkpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJl
c3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LWNzZS5qcyBiL0pTVGVzdHMvc3RyZXNzL251
bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGI3ODIxNmQ1OGRm
NmE5NTM4MDQwZjFmNzQyYmZlMGJkN2M3MzVkMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMv
c3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKQEAgLTAsMCArMSwyMSBA
QAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwg
IT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2JhZCB2YWx1ZTogJyArIGFj
dHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciByZXN1bHQ7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAg
ICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIGkudG9TdHJpbmcoMTYpOworICAgICAgICBp
LnRvU3RyaW5nKDE2KTsKKyAgICAgICAgcmVzdWx0ID0gaS50b1N0cmluZygxNik7CisgICAgfQor
ICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7
IGkgPCAxZTM7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCksIGA2M2ApOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LWludmFsaWQuanMgYi9K
U1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtaW52YWxpZC5qcwpuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi4wNjkwOTY1MTRmMDUyZTQ3NGFjNDE3OTFhNzNmZGZlNTA2NDFlNmIyCi0tLSAvZGV2
L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LWlu
dmFsaWQuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJy
b3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7CisgICAgdmFyIGVycm9y
ID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgewor
ICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9Cisg
ICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdub3QgdGhyb3du
Jyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2FnZSkKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1gKTsKK30KKworZnVuY3Rp
b24gdGVzdChpLCByYWRpeCkKK3sKKyAgICByZXR1cm4gaS50b1N0cmluZyhyYWRpeCk7Cit9Citu
b0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIHNo
b3VsZFRocm93KCgpID0+IHRlc3QoaSwgNDIpLCBgUmFuZ2VFcnJvcjogdG9TdHJpbmcoKSByYWRp
eCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzZgKTsKK30KZGlmZiAtLWdpdCBhL0pT
VGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhOTc2MDAw
ODUwYTg4YzZmMDg0ODk0YTI0OGQ4YTM0MzJmOWFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0
cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzCkBAIC0wLDAgKzEsMjEgQEAK
K2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9
PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1
YWwpOworfQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEw
OyArK2kpIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICcnOworICAgICAgICByZXN1bHQgKz0gaS50
b1N0cmluZygyKTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoNCk7CisgICAgICAgIHJl
c3VsdCArPSBpLnRvU3RyaW5nKDgpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygxNik7
CisgICAgICAgIHJlc3VsdCArPSBpLnRvU3RyaW5nKDMyKTsKKyAgICB9CisgICAgcmV0dXJuIHJl
c3VsdDsKK30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytp
KQorICAgIHNob3VsZEJlKHRlc3QoKSwgYDEwMDEyMTExOTlgKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>319769</attachid>
            <date>2017-09-03 03:06:52 -0700</date>
            <delta_ts>2017-09-04 14:07:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-170007-20170903190651.patch</filename>
            <type>text/plain</type>
            <size>43011</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIxNTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBl
YmZiYzQ3M2RmNzZiZmJkMWMxYzE3ZGJhOTcwN2ZjOTdlZGMwNzY4Li5iMGQzMjBjNzIyODBiYTgz
NmNmOTBiYTBjNjI5Nzc3YWY1ZmNiZGMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw4OCBAQAorMjAxNy0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWls
LmNvbT4KKworICAgICAgICBbREZHXVtGVExdIEVmZmljaWVudGx5IGV4ZWN1dGUgbnVtYmVyI3Rv
U3RyaW5nKCkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE3MDAwNworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEluIEpTLCB0aGUgbmF0dXJhbCB3YXkgdG8gY29udmVydCBudW1iZXIgdG8gc3RyaW5nIHdpdGgg
cmFkaXggaXMgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBIb3dldmVyLCBvdXIg
SUMgb25seSBjYXJlcyBjZWxscy4gSWYgdGhlIGJhc2UgdmFsdWUgaXMgYSBudW1iZXIsIGl0IGFs
d2F5cyBnb2VzIHRvIHRoZSBzbG93IHBhdGguCisKKyAgICAgICAgV2hpbGUgZXh0ZW5kaW5nIG91
ciBJQyBmb3IgbnVtYmVyIGFuZCBib29sZWFuLCB0aGUgbW9zdCBtZWFuaW5nZnVsIHVzZSBvZiB0
aGlzIElDIGlzIGNhbGxpbmcgYG51bWJlci50b1N0cmluZyhyYWRpeClgLgorICAgICAgICBTbywg
aW4gdGhpcyBwYXRjaCwgd2UgZmlyc3QgYWRkIGEgZmFzdCBwYXRoIGZvciB0aGlzIGluIERGRyBi
eSB1c2luZyB3YXRjaHBvaW50LiBXZSBzZXQgdXAgYSB3YXRjaHBvaW50IGZvcgorICAgICAgICBO
dW1iZXIucHJvdG90eXBlLnRvU3RyaW5nLiBBbmQgaWYgdGhpcyB3YXRjaHBvaW50IGlzIGtlcHQg
YWxpdmUgYW5kIEdldEJ5SWQoYmFzZSwgInRvU3RyaW5nIikncyBiYXNlIHNob3VsZCBiZQorICAg
ICAgICBzcGVjdWxhdGVkIGFzIE51bWJlciwgd2UgZW1pdCBOdW1iZXIgcmVsYXRlZCBDaGVja3Mg
YW5kIGNvbnZlcnQgR2V0QnlJZCB0byBOdW1iZXIucHJvdG90eXBlLnRvU3RyaW5nIGNvbnN0YW50
LgorICAgICAgICBJdCByZW1vdmVzIGNvc3RseSBHZXRCeUlkIHNsb3cgcGF0aCwgYW5kIG1ha2Vz
IGl0IG5vbi1jbG9iYmVyaW5nIG5vZGUgKEpTQ29uc3RhbnQpLgorCisgICAgICAgIEluIGFkZGl0
aW9uLCB3ZSBhZGQgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50IG5vZGUuIFdl
IGhhdmUgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXggbm9kZSwgYnV0IGl0IG1heQorICAgICAgICB0
aHJvdyBhbiBlcnJvciBpZiB0aGUgdmFsaWQgdmFsdWUgaXMgaW5jb3JyZWN0IChmb3IgZXhhbXBs
ZSwgbnVtYmVyLnRvU3RyaW5nKDIwMDApKS4gU28gaXRzIGNsb2JiZXJpbmcgcnVsZSBpcworICAg
ICAgICBjb25zZXJ2YXRpdmVseSB1c2UgcmVhZChXb3JsZCkvd3JpdGUoSGVhcCkuIEJ1dCBpbiBy
ZWFsaXR5LCBgbnVtYmVyLnRvU3RyaW5nYCBpcyB3ZWxsIGNhbGxlZCB3aXRoIHRoZSBjb25zdGFu
dAorICAgICAgICByYWRpeCwgYW5kIHdlIGNhbiBlYXNpbHkgZmlndXJlIG91dCB0aGlzIHJhZGl4
IGlzIHZhbGlkICgyIDw9IHJhZGl4ICYmIHJhZGl4IDwgMzIpLgorICAgICAgICBXZSBhZGQgYSBy
dWxlIHRvIHRoZSBjb25zdGFudCBmb2xkaW5nIHBoYXNlIHRvIGNvbnZlcnQgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXggdG8gTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50LgorICAg
ICAgICBJdCBlbnN1cmVzIHRoYXQgaXQgaGFzIHZhbGlkIGNvbnN0YW50IHJhZGl4LiBBbmQgd2Ug
cmVsYXggb3VyIGNsb2JiZXJpbmcgcnVsZSBmb3IgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50LgorCisgICAgICAgIEFkZGVkIG1pY3JvYmVuY2htYXJrcyBzaG93IHBlcmZvcm1h
bmNlIGltcHJvdmVtZW50LgorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBiYXNlbGluZSAgICAgICAgICAgICAgICAgIHBhdGNoZWQKKworICAg
ICAgICBudW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgtY3NlICAgICAgICAgICA0My44MzEyKy0x
LjMwMTcgICAgIF4gICAgICA3LjQ5MzArLTAuNTEwNSAgICAgICAgXiBkZWZpbml0ZWx5IDUuODQ5
NnggZmFzdGVyCisgICAgICAgIG51bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMCAgICAgICAg
ICAgICA3LjI3NzUrLTAuNTIyNSAgICAgXiAgICAgIDIuMTkwNistMC4xODY0ICAgICAgICBeIGRl
ZmluaXRlbHkgMy4zMjIyeCBmYXN0ZXIKKyAgICAgICAgbnVtYmVyLXRvLXN0cmluZy13aXRoLXJh
ZGl4ICAgICAgICAgICAgICAgMzkuNzM3OCstMS40OTIxICAgICBeICAgICAxNi42MTM3Ky0wLjc3
NzYgICAgICAgIF4gZGVmaW5pdGVseSAyLjM5MTl4IGZhc3RlcgorICAgICAgICBudW1iZXItdG8t
c3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbiAgICAgICA5NC45NjY3Ky0yLjcxNTcgICAgIF4gICAg
ICA5LjMwNjArLTAuNzIwMiAgICAgICAgXiBkZWZpbml0ZWx5IDEwLjIwNDl4IGZhc3RlcgorCisg
ICAgICAgICogZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmg6CisgICAgICAgIChK
U0M6OkRGRzo6QWJzdHJhY3RJbnRlcnByZXRlcjxBYnN0cmFjdFN0YXRlVHlwZT46OmV4ZWN1dGVF
ZmZlY3RzKToKKyAgICAgICAgKiBkZmcvREZHQ2xvYmJlcml6ZS5oOgorICAgICAgICAoSlNDOjpE
Rkc6OmNsb2JiZXJpemUpOgorICAgICAgICAqIGRmZy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5j
cHA6CisgICAgICAgIChKU0M6OkRGRzo6Q29uc3RhbnRGb2xkaW5nUGhhc2U6OmZvbGRDb25zdGFu
dHMpOgorICAgICAgICAqIGRmZy9ERkdEb2VzR0MuY3BwOgorICAgICAgICAoSlNDOjpERkc6OmRv
ZXNHQyk6CisgICAgICAgICogZGZnL0RGR0ZpeHVwUGhhc2UuY3BwOgorICAgICAgICAoSlNDOjpE
Rkc6OkZpeHVwUGhhc2U6OmZpeHVwTm9kZSk6CisgICAgICAgICogZGZnL0RGR0dyYXBoLmg6Cisg
ICAgICAgIChKU0M6OkRGRzo6R3JhcGg6OmlzV2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpHcmFwaDo6aXNXYXRjaGluZ0FycmF5SXRlcmF0b3JQcm90
b2NvbFdhdGNocG9pbnQpOgorICAgICAgICAoSlNDOjpERkc6OkdyYXBoOjppc1dhdGNoaW5nTnVt
YmVyVG9TdHJpbmdXYXRjaHBvaW50KToKKyAgICAgICAgKiBkZmcvREZHTm9kZS5oOgorICAgICAg
ICAoSlNDOjpERkc6Ok5vZGU6OmNvbnZlcnRUb051bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhD
b25zdGFudCk6CisgICAgICAgIChKU0M6OkRGRzo6Tm9kZTo6aGFzVmFsaWRSYWRpeENvbnN0YW50
KToKKyAgICAgICAgKEpTQzo6REZHOjpOb2RlOjp2YWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAg
ICAqIGRmZy9ERkdOb2RlVHlwZS5oOgorICAgICAgICAqIGRmZy9ERkdQcmVkaWN0aW9uUHJvcGFn
YXRpb25QaGFzZS5jcHA6CisgICAgICAgICogZGZnL0RGR1NhZmVUb0V4ZWN1dGUuaDoKKyAgICAg
ICAgKEpTQzo6REZHOjpzYWZlVG9FeGVjdXRlKToKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRp
dmVKSVQuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9T
dHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvcik6CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3Vs
YXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQpOgor
ICAgICAgICAoSlNDOjpERkc6OlNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdPckNhbGxT
dHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKTogRGVsZXRlZC4KKyAgICAgICAgKiBkZmcvREZHU3Bl
Y3VsYXRpdmVKSVQuaDoKKyAgICAgICAgKiBkZmcvREZHU3BlY3VsYXRpdmVKSVQzMl82NC5jcHA6
CisgICAgICAgIChKU0M6OkRGRzo6U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGUpOgorICAgICAgICAq
IGRmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcDoKKyAgICAgICAgKEpTQzo6REZHOjpTcGVjdWxh
dGl2ZUpJVDo6Y29tcGlsZSk6CisgICAgICAgICogZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhh
c2UuY3BwOgorICAgICAgICAoSlNDOjpERkc6OlN0cmVuZ3RoUmVkdWN0aW9uUGhhc2U6OmhhbmRs
ZU5vZGUpOgorICAgICAgICAqIGZ0bC9GVExDYXBhYmlsaXRpZXMuY3BwOgorICAgICAgICAoSlND
OjpGVEw6OmNhbkNvbXBpbGUpOgorICAgICAgICAqIGZ0bC9GVExMb3dlckRGR1RvQjMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6OkRGRzo6TG93ZXJERkdUb0IzOjpjb21waWxlTm9kZSk6CisgICAg
ICAgIChKU0M6OkZUTDo6REZHOjpMb3dlckRGR1RvQjM6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dp
dGhWYWxpZFJhZGl4Q29uc3RhbnQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6SlNHbG9iYWxPYmplY3QpOgorICAg
ICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFs
T2JqZWN0Ojp2aXNpdENoaWxkcmVuKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpudW1iZXJUb1N0cmluZ1dhdGNocG9p
bnQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6bnVtYmVyUHJvdG9Ub1N0cmluZ0Z1
bmN0aW9uIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL051bWJlclByb3RvdHlwZS5jcHA6Cisg
ICAgICAgIChKU0M6Ok51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAo
SlNDOjp0b1N0cmluZ1dpdGhSYWRpeEludGVybmFsKToKKyAgICAgICAgKEpTQzo6dG9TdHJpbmdX
aXRoUmFkaXgpOgorICAgICAgICAoSlNDOjppbnQzMlRvU3RyaW5nSW50ZXJuYWwpOgorICAgICAg
ICAoSlNDOjpudW1iZXJUb1N0cmluZ0ludGVybmFsKToKKyAgICAgICAgKiBydW50aW1lL051bWJl
clByb3RvdHlwZS5oOgorCiAyMDE3LTA5LTAzICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+
CiAKICAgICAgICAgUmVtb3ZlIENhbnZhc1Byb3h5CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR0Fic3RyYWN0SW50ZXJwcmV0ZXJJbmxpbmVzLmgKaW5kZXggYTFh
MjE2YTI4MTliNTMzMjYyNDdjMzgwMjg1Yzk4ZGNhMjBmYjQ1NC4uYWY5OGU3ZjNiMGZhYTg4MzQ2
Y2FjNjEyMGE1NzE5ODA4NWViNDg5MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdBYnN0cmFjdEludGVycHJldGVySW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9kZmcvREZHQWJzdHJhY3RJbnRlcnByZXRlcklubGluZXMuaApAQCAtMTk0OSwxMCAr
MTk0OSwyNSBAQCBib29sIEFic3RyYWN0SW50ZXJwcmV0ZXI8QWJzdHJhY3RTdGF0ZVR5cGU+Ojpl
eGVjdXRlRWZmZWN0cyh1bnNpZ25lZCBjbG9iYmVyTGltaQogICAgICAgICBicmVhazsKICAgICB9
CiAKLSAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFJhZGl4OgorICAgIGNhc2UgTnVtYmVyVG9T
dHJpbmdXaXRoUmFkaXg6IHsKKyAgICAgICAgSlNWYWx1ZSByYWRpeFZhbHVlID0gZm9yTm9kZShu
b2RlLT5jaGlsZDIoKSkubV92YWx1ZTsKKyAgICAgICAgaWYgKHJhZGl4VmFsdWUgJiYgcmFkaXhW
YWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgIGludDMyX3QgcmFkaXggPSByYWRpeFZhbHVl
LmFzSW50MzIoKTsKKyAgICAgICAgICAgIGlmIChyYWRpeCA+PSAyICYmIHJhZGl4IDw9IDM2KSB7
CisgICAgICAgICAgICAgICAgbV9zdGF0ZS5zZXRGb3VuZENvbnN0YW50cyh0cnVlKTsKKyAgICAg
ICAgICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBoLm1fdm0uc3RyaW5n
U3RydWN0dXJlLmdldCgpKTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQogICAgICAgICBjbG9iYmVyV29ybGQobm9kZS0+b3JpZ2luLnNlbWFudGljLCBj
bG9iYmVyTGltaXQpOwogICAgICAgICBmb3JOb2RlKG5vZGUpLnNldChtX2dyYXBoLCBtX2dyYXBo
Lm1fdm0uc3RyaW5nU3RydWN0dXJlLmdldCgpKTsKICAgICAgICAgYnJlYWs7CisgICAgfQorCisg
ICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6IHsKKyAgICAgICAg
Zm9yTm9kZShub2RlKS5zZXQobV9ncmFwaCwgbV9ncmFwaC5tX3ZtLnN0cmluZ1N0cnVjdHVyZS5n
ZXQoKSk7CisgICAgICAgIGJyZWFrOworICAgIH0KICAgICAgICAgCiAgICAgY2FzZSBOZXdTdHJp
bmdPYmplY3Q6IHsKICAgICAgICAgQVNTRVJUKG5vZGUtPnN0cnVjdHVyZSgpLT5jbGFzc0luZm8o
KSA9PSBTdHJpbmdPYmplY3Q6OmluZm8oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR0Nsb2JiZXJpemUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
Q2xvYmJlcml6ZS5oCmluZGV4IDY2OTFiZjlhNDZjMTU4OTljZGI0YzFiMmExOTE2ZDYyMjU0ZDhk
MmEuLjU2YzA2YjMwOGQ0Mjc2Y2M4MGZjZmMxNzU4YzFjMDA1ODUzZjEyNzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHQ2xvYmJlcml6ZS5oCkBAIC0xNTg0LDkgKzE1ODQsMTQgQEAg
dm9pZCBjbG9iYmVyaXplKEdyYXBoJiBncmFwaCwgTm9kZSogbm9kZSwgY29uc3QgUmVhZEZ1bmN0
b3ImIHJlYWQsIGNvbnN0IFdyaXRlRnUKICAgICAgICAgcmV0dXJuOwogCiAgICAgY2FzZSBOdW1i
ZXJUb1N0cmluZ1dpdGhSYWRpeDoKKyAgICAgICAgLy8gSWYgdGhlIHJhZGl4IGlzIGludmFsaWQs
IE51bWJlclRvU3RyaW5nV2l0aFJhZGl4IGNhbiB0aHJvdyBhbiBlcnJvci4KICAgICAgICAgcmVh
ZChXb3JsZCk7CiAgICAgICAgIHdyaXRlKEhlYXApOwogICAgICAgICByZXR1cm47CisKKyAgICBj
YXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKKyAgICAgICAgZGVmKFB1
cmVWYWx1ZShub2RlLCBub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSkpOworICAgICAgICByZXR1
cm47CiAgICAgICAgIAogICAgIGNhc2UgTGFzdE5vZGVUeXBlOgogICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2Rm
Zy9ERkdDb25zdGFudEZvbGRpbmdQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZn
L0RGR0NvbnN0YW50Rm9sZGluZ1BoYXNlLmNwcAppbmRleCAxOWU5OGU4NDY5NGRmM2Q1ZTg2ODIz
Yzg0MjAxYTU5NjI1OGIwMGZkLi4yMGEwOTlmMmZlNjEwMzBhNzRjNDhhY2IxMjZmNzdiODBhOWI2
YzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50Rm9s
ZGluZ1BoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0NvbnN0YW50
Rm9sZGluZ1BoYXNlLmNwcApAQCAtNjQ1LDYgKzY0NSwyMyBAQCBjbGFzcyBDb25zdGFudEZvbGRp
bmdQaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAg
ICAgICB9CiAKKyAgICAgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6IHsKKyAg
ICAgICAgICAgICAgICBKU1ZhbHVlIHJhZGl4VmFsdWUgPSBtX3N0YXRlLmZvck5vZGUobm9kZS0+
Y2hpbGQyKCkpLm1fdmFsdWU7CisgICAgICAgICAgICAgICAgaWYgKHJhZGl4VmFsdWUgJiYgcmFk
aXhWYWx1ZS5pc0ludDMyKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50MzJfdCByYWRpeCA9
IHJhZGl4VmFsdWUuYXNJbnQzMigpOworICAgICAgICAgICAgICAgICAgICBpZiAocmFkaXggPj0g
MiAmJiByYWRpeCA8PSAzNikgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHJhZGl4ID09
IDEwKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9kZS0+c2V0T3BBbmREZWZhdWx0
RmxhZ3MoVG9TdHJpbmcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vZGUtPmNoaWxk
MigpID0gRWRnZSgpOworICAgICAgICAgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgbm9kZS0+Y29udmVydFRvTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRS
YWRpeENvbnN0YW50KHJhZGl4KTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoYW5nZWQgPSB0
cnVlOworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAg
IH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGNhc2UgQ2hlY2s6IHsKICAgICAgICAgICAgICAgICBhbHJlYWR5
SGFuZGxlZCA9IHRydWU7CiAgICAgICAgICAgICAgICAgbV9pbnRlcnByZXRlci5leGVjdXRlKGlu
ZGV4SW5CbG9jayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0Rv
ZXNHQy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0RvZXNHQy5jcHAKaW5kZXgg
NmQ5ZDIyODA1MGJiZjUzOWVhY2FiOWU3MDBiODYyYTliMjkwZGU3MC4uMjViMWZmYzcyNjJhNjBi
MDRhY2JhMTZhMjI5MzFiYmIxNWJmNTQ1ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdEb2VzR0MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZH
RG9lc0dDLmNwcApAQCAtMTc4LDYgKzE3OCw3IEBAIGJvb2wgZG9lc0dDKEdyYXBoJiBncmFwaCwg
Tm9kZSogbm9kZSkKICAgICBjYXNlIFRvU3RyaW5nOgogICAgIGNhc2UgQ2FsbFN0cmluZ0NvbnN0
cnVjdG9yOgogICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgY2FzZSBOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ6CiAgICAgY2FzZSBJbjoKICAgICBjYXNl
IEhhc093blByb3BlcnR5OgogICAgIGNhc2UgSnVtcDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
ZGZnL0RGR0ZpeHVwUGhhc2UuY3BwCmluZGV4IGFhMGJlM2NiOTQwYjk1ODg4NjUyNWNlM2M0ZWI0
NWE2MzA4NTFiMTkuLjFhM2NiYzkyMDdmOTllZTMxMDM0MTIxMmRlNTQ3MzAxYjQ4YzNmNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHRml4dXBQaGFzZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdGaXh1cFBoYXNlLmNwcApAQCAtMTMxMSwx
NCArMTMxMSwxMyBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAg
ICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBkb25lIGluIHRoZSBCeXRlQ29kZVBhcnNlciBi
YXNlZCBvbiByZWFkaW5nIHRoZQogICAgICAgICAgICAgLy8gUG9seW1vcnBoaWNBY2Nlc3MsIHdo
aWNoIHdpbGwgc3VyZWx5IHRlbGwgdXMgdGhhdCB0aGlzIGlzIGEgQWNjZXNzQ2FzZTo6QXJyYXlM
ZW5ndGguCiAgICAgICAgICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTU0OTkwCisgICAgICAgICAgICBhdXRvIHVpZCA9IG1fZ3JhcGguaWRlbnRpZmllcnMo
KVtub2RlLT5pZGVudGlmaWVyTnVtYmVyKCldOwogICAgICAgICAgICAgaWYgKG5vZGUtPmNoaWxk
MSgpLT5zaG91bGRTcGVjdWxhdGVDZWxsT3JPdGhlcigpCiAgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBCYWRUeXBlKQogICAgICAg
ICAgICAgICAgICYmICFtX2dyYXBoLmhhc0V4aXRTaXRlKG5vZGUtPm9yaWdpbi5zZW1hbnRpYywg
QmFkQ2FjaGUpCiAgICAgICAgICAgICAgICAgJiYgIW1fZ3JhcGguaGFzRXhpdFNpdGUobm9kZS0+
b3JpZ2luLnNlbWFudGljLCBCYWRJbmRleGluZ1R5cGUpCiAgICAgICAgICAgICAgICAgJiYgIW1f
Z3JhcGguaGFzRXhpdFNpdGUobm9kZS0+b3JpZ2luLnNlbWFudGljLCBFeG90aWNPYmplY3RNb2Rl
KSkgewogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIGF1dG8gdWlkID0gbV9ncmFw
aC5pZGVudGlmaWVycygpW25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07Ci0gICAgICAgICAgICAg
ICAgCiAgICAgICAgICAgICAgICAgaWYgKHVpZCA9PSB2bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0
aC5pbXBsKCkpIHsKICAgICAgICAgICAgICAgICAgICAgYXR0ZW1wdFRvTWFrZUdldEFycmF5TGVu
Z3RoKG5vZGUpOwogICAgICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTEzMzMsNiArMTMzMiwz
MCBAQCBjbGFzcyBGaXh1cFBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgICAgICAgICB9
CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxk
U3BlY3VsYXRlTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodWlkID09IHZtKCkucHJv
cGVydHlOYW1lcy0+dG9TdHJpbmcuaW1wbCgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICht
X2dyYXBoLmlzV2F0Y2hpbmdOdW1iZXJUb1N0cmluZ1dhdGNocG9pbnQobm9kZSkpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBtX2dyYXBo
Lmdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVJbnQzMigpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zZXJ0Q2hlY2s8SW50MzJVc2U+KG5vZGUtPmNo
aWxkMSgpLm5vZGUoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9ncmFwaC5jb252
ZXJ0VG9Db25zdGFudChub2RlLCBtX2dyYXBoLmZyZWV6ZShnbG9iYWxPYmplY3QtPm51bWJlclBy
b3RvVG9TdHJpbmdGdW5jdGlvbigpKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChlbmFibGVJbnQ1MigpICYmIG5vZGUtPmNoaWxkMSgpLT5zaG91bGRTcGVjdWxhdGVBbnlJ
bnQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydENoZWNrPEludDUyUmVw
VXNlPihub2RlLT5jaGlsZDEoKS5ub2RlKCkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZ3JhcGguY29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUoZ2xvYmFsT2Jq
ZWN0LT5udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSkpOworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAg
ICAgICAgICAgICAgICBBU1NFUlQobm9kZS0+Y2hpbGQxKCktPnNob3VsZFNwZWN1bGF0ZU51bWJl
cigpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydENoZWNrPERvdWJsZVJlcFVzZT4o
bm9kZS0+Y2hpbGQxKCkubm9kZSgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIG1fZ3JhcGgu
Y29udmVydFRvQ29uc3RhbnQobm9kZSwgbV9ncmFwaC5mcmVlemUoZ2xvYmFsT2JqZWN0LT5udW1i
ZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24oKSkpOworICAgICAgICAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICB9CisKICAgICAgICAgICAgIGlmIChub2RlLT5jaGlsZDEoKS0+c2hvdWxkU3BlY3VsYXRlQ2Vs
bCgpKQogICAgICAgICAgICAgICAgIGZpeEVkZ2U8Q2VsbFVzZT4obm9kZS0+Y2hpbGQxKCkpOwog
ICAgICAgICAgICAgYnJlYWs7CkBAIC0yMDIyLDYgKzIwNDUsNyBAQCBjbGFzcyBGaXh1cFBoYXNl
IDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2FzZSBQdXRCeVZhbFdpdGhUaGlzOgogICAgICAg
ICBjYXNlIEdldEJ5VmFsV2l0aFRoaXM6CiAgICAgICAgIGNhc2UgQ29tcGFyZUVxUHRyOgorICAg
ICAgICBjYXNlIE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudDoKICAgICAgICAg
ICAgIGJyZWFrOwogI2Vsc2UKICAgICAgICAgZGVmYXVsdDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9kZmcvREZHR3JhcGguaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHR3JhcGguaAppbmRleCA2NjMwODE1MWRkYzUwN2Q0NTczMzljYjViZGYwZTczMDhmZDU3N2Q5
Li41YzM5YzE3MmM2MGUwNWNjOGY4NDIyM2ZkZTYyOGZmYWFmNTRiOGI2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR0dyYXBoLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2RmZy9ERkdHcmFwaC5oCkBAIC03MzAsMTAgKzczMCw4IEBAIGNsYXNzIEdyYXBoIDog
cHVibGljIHZpcnR1YWwgU2Nhbm5hYmxlIHsKICAgICAgICAgcmV0dXJuIHdhdGNocG9pbnRzKCku
aXNXYXRjaGVkKGdsb2JhbE9iamVjdC0+aGF2aW5nQUJhZFRpbWVXYXRjaHBvaW50KCkpOwogICAg
IH0KIAotICAgIGJvb2wgaXNXYXRjaGluZ0FycmF5SXRlcmF0b3JQcm90b2NvbFdhdGNocG9pbnQo
Tm9kZSogbm9kZSkKKyAgICBib29sIGlzV2F0Y2hpbmdHbG9iYWxPYmplY3RXYXRjaHBvaW50KEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElubGluZVdhdGNocG9pbnRTZXQmIHNldCkKICAg
ICB7Ci0gICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBnbG9iYWxPYmplY3RG
b3Iobm9kZS0+b3JpZ2luLnNlbWFudGljKTsKLSAgICAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYg
c2V0ID0gZ2xvYmFsT2JqZWN0LT5hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KCk7CiAg
ICAgICAgIGlmICh3YXRjaHBvaW50cygpLmlzV2F0Y2hlZChzZXQpKQogICAgICAgICAgICAgcmV0
dXJuIHRydWU7CiAKQEAgLTc0OSw2ICs3NDcsMjAgQEAgY2xhc3MgR3JhcGggOiBwdWJsaWMgdmly
dHVhbCBTY2FubmFibGUgewogCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKKyAgICBi
b29sIGlzV2F0Y2hpbmdBcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBvaW50KE5vZGUqIG5vZGUp
CisgICAgeworICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gZ2xvYmFsT2Jq
ZWN0Rm9yKG5vZGUtPm9yaWdpbi5zZW1hbnRpYyk7CisgICAgICAgIElubGluZVdhdGNocG9pbnRT
ZXQmIHNldCA9IGdsb2JhbE9iamVjdC0+YXJyYXlJdGVyYXRvclByb3RvY29sV2F0Y2hwb2ludCgp
OworICAgICAgICByZXR1cm4gaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdhdGNocG9pbnQoZ2xvYmFs
T2JqZWN0LCBzZXQpOworICAgIH0KKworICAgIGJvb2wgaXNXYXRjaGluZ051bWJlclRvU3RyaW5n
V2F0Y2hwb2ludChOb2RlKiBub2RlKQorICAgIHsKKyAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGdsb2JhbE9iamVjdEZvcihub2RlLT5vcmlnaW4uc2VtYW50aWMpOworICAg
ICAgICBJbmxpbmVXYXRjaHBvaW50U2V0JiBzZXQgPSBnbG9iYWxPYmplY3QtPm51bWJlclRvU3Ry
aW5nV2F0Y2hwb2ludCgpOworICAgICAgICByZXR1cm4gaXNXYXRjaGluZ0dsb2JhbE9iamVjdFdh
dGNocG9pbnQoZ2xvYmFsT2JqZWN0LCBzZXQpOworICAgIH0KICAgICAKICAgICBQcm9maWxlcjo6
Q29tcGlsYXRpb24qIGNvbXBpbGF0aW9uKCkgeyByZXR1cm4gbV9wbGFuLmNvbXBpbGF0aW9uLmdl
dCgpOyB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR05v
ZGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCmluZGV4IGJlNTc2MmJi
NzFiZTA3YWFiNTA3ODVjNDFlY2RiNjA5MWM3MDg5MzAuLjJiMWQ4NjVkMWUxODMwNTU5MTcxNDkx
MDQ4ZmY1NzczMzhkYzdjNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHTm9kZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZS5oCkBAIC02
OTEsNiArNjkxLDE1IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAgY2hpbGRyZW4uc2V0Q2hpbGQy
KEVkZ2UoKSk7CiAgICAgICAgIG1fb3BJbmZvID0gY2VsbDsKICAgICB9CisKKyAgICB2b2lkIGNv
bnZlcnRUb051bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChpbnQzMl90IHJhZGl4
KQorICAgIHsKKyAgICAgICAgQVNTRVJUKG1fb3AgPT0gTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXgp
OworICAgICAgICBBU1NFUlQocmFkaXggPj0gMiAmJiByYWRpeCA8PSAzNik7CisgICAgICAgIHNl
dE9wQW5kRGVmYXVsdEZsYWdzKE51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudCk7
CisgICAgICAgIGNoaWxkcmVuLnNldENoaWxkMihFZGdlKCkpOworICAgICAgICBtX29wSW5mbyA9
IHJhZGl4OworICAgIH0KICAgICAKICAgICB2b2lkIGNvbnZlcnRUb0RpcmVjdENhbGwoRnJvemVu
VmFsdWUqKTsKIApAQCAtMjU4Myw2ICsyNTkyLDE3IEBAIHN0cnVjdCBOb2RlIHsKICAgICAgICAg
cmV0dXJuIG1fb3BJbmZvLmFzPEJ1Y2tldE93bmVyVHlwZT4oKTsKICAgICB9CiAKKyAgICBib29s
IGhhc1ZhbGlkUmFkaXhDb25zdGFudCgpCisgICAgeworICAgICAgICByZXR1cm4gb3AoKSA9PSBO
dW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQ7CisgICAgfQorCisgICAgaW50MzJf
dCB2YWxpZFJhZGl4Q29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgQVNTRVJUKGhhc1ZhbGlkUmFk
aXhDb25zdGFudCgpKTsKKyAgICAgICAgcmV0dXJuIG1fb3BJbmZvLmFzPGludDMyX3Q+KCk7Cisg
ICAgfQorCiAgICAgdWludDMyX3QgZXJyb3JUeXBlKCkKICAgICB7CiAgICAgICAgIEFTU0VSVChv
cCgpID09IFRocm93U3RhdGljRXJyb3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdOb2RlVHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdOb2Rl
VHlwZS5oCmluZGV4IGU5ZjA3NmM5MzQwZmE0ODg2YjE5OWI5N2U0MjdhOWIwMGE3NmI3YzYuLmEy
Y2I4MjMzMzAxY2U2Y2MxOWFkZTFlMGM0MjBjMmUyYmM3NzIzYzkgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHTm9kZVR5cGUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR05vZGVUeXBlLmgKQEAgLTM1NCw2ICszNTQsNyBAQCBuYW1lc3BhY2UgSlND
IHsgbmFtZXNwYWNlIERGRyB7CiAgICAgbWFjcm8oQ2FsbE9iamVjdENvbnN0cnVjdG9yLCBOb2Rl
UmVzdWx0SlMpIFwKICAgICBtYWNybyhDYWxsU3RyaW5nQ29uc3RydWN0b3IsIE5vZGVSZXN1bHRK
UyB8IE5vZGVNdXN0R2VuZXJhdGUpIFwKICAgICBtYWNybyhOdW1iZXJUb1N0cmluZ1dpdGhSYWRp
eCwgTm9kZVJlc3VsdEpTIHwgTm9kZU11c3RHZW5lcmF0ZSkgXAorICAgIG1hY3JvKE51bWJlclRv
U3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudCwgTm9kZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8o
TmV3U3RyaW5nT2JqZWN0LCBOb2RlUmVzdWx0SlMpIFwKICAgICBtYWNybyhNYWtlUm9wZSwgTm9k
ZVJlc3VsdEpTKSBcCiAgICAgbWFjcm8oSW4sIE5vZGVSZXN1bHRCb29sZWFuIHwgTm9kZU11c3RH
ZW5lcmF0ZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdQcmVk
aWN0aW9uUHJvcGFnYXRpb25QaGFzZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcAppbmRleCBlNTViMWY3OTIxZjY2NjViZmYw
OTdmNmNjOWQyZWM1YjI4NWE0NWY2Li4xMDg4OTk1NjFkMWQ4N2NmMGRkNzZhMTRjMmRhNjFmYzBi
ZDhmNmE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1ByZWRpY3Rp
b25Qcm9wYWdhdGlvblBoYXNlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RG
R1ByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlLmNwcApAQCAtOTEyLDYgKzkxMiw3IEBAIGNsYXNz
IFByZWRpY3Rpb25Qcm9wYWdhdGlvblBoYXNlIDogcHVibGljIFBoYXNlIHsKICAgICAgICAgY2Fz
ZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CiAgICAgICAgIGNhc2UgVG9TdHJpbmc6CiAgICAgICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoUmFkaXg6CisgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OgogICAgICAgICBjYXNlIE1ha2VSb3BlOgogICAgICAg
ICBjYXNlIFN0ckNhdDogewogICAgICAgICAgICAgc2V0UHJlZGljdGlvbihTcGVjU3RyaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU2FmZVRvRXhlY3V0ZS5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKaW5kZXggYWQ3
NmIzM2IwZmFhZjE4N2RiNDZhMzA4OTJmNDdmY2E3ZTNiNDQ5ZC4uZWFlMzc0YjIzMzI2N2FjM2Zm
Yjk1Y2Q3YjRhZGRiNDRjOTNkNjQ4ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2RmZy9ERkdTYWZlVG9FeGVjdXRlLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9E
RkdTYWZlVG9FeGVjdXRlLmgKQEAgLTI4OCw2ICsyODgsNyBAQCBib29sIHNhZmVUb0V4ZWN1dGUo
QWJzdHJhY3RTdGF0ZVR5cGUmIHN0YXRlLCBHcmFwaCYgZ3JhcGgsIE5vZGUqIG5vZGUpCiAgICAg
Y2FzZSBUb1N0cmluZzoKICAgICBjYXNlIFRvTnVtYmVyOgogICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXg6CisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3Rh
bnQ6CiAgICAgY2FzZSBTZXRGdW5jdGlvbk5hbWU6CiAgICAgY2FzZSBTdHJDYXQ6CiAgICAgY2Fz
ZSBDYWxsU3RyaW5nQ29uc3RydWN0b3I6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3BlY3VsYXRpdmVKSVQuY3BwCmluZGV4IGMyMDI5MDgyMzA3NGIwNmMxYTAzNDlhYWNmNGQ4
MTE3ZDg4MTcyMmUuLmRiOGMwMzZjMGEyOWNjNGFjNWJjNDkzZDJhYmRlMWZiOWE0ZjNmMTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRpdmVKSVQuY3BwCkBA
IC04MzUzLDcgKzgzNTMsNyBAQCB2b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxlVG9TdHJpbmdP
ckNhbGxTdHJpbmdDb25zdHJ1Y3RvcihOb2RlKiBub2RlKQogICAgIGNhc2UgSW50MzJVc2U6CiAg
ICAgY2FzZSBJbnQ1MlJlcFVzZToKICAgICBjYXNlIERvdWJsZVJlcFVzZToKLSAgICAgICAgY29t
cGlsZVRvU3RyaW5nT3JDYWxsU3RyaW5nQ29uc3RydWN0b3JPbk51bWJlcihub2RlKTsKKyAgICAg
ICAgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFkaXhDb25zdGFudChub2RlLCAxMCk7
CiAgICAgICAgIHJldHVybjsKIAogICAgIGRlZmF1bHQ6CkBAIC04NDM0LDExICs4NDM0LDE2IEBA
IHZvaWQgU3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVUb1N0cmluZ09yQ2FsbFN0cmluZ0NvbnN0cnVj
dG9yKE5vZGUqIG5vZGUpCiAgICAgfQogfQogCi12b2lkIFNwZWN1bGF0aXZlSklUOjpjb21waWxl
VG9TdHJpbmdPckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKE5vZGUqIG5vZGUpCit2b2lk
IFNwZWN1bGF0aXZlSklUOjpjb21waWxlTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0
YW50KE5vZGUqIG5vZGUpCit7CisgICAgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudChub2RlLCBub2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSk7Cit9CisKK3ZvaWQg
U3BlY3VsYXRpdmVKSVQ6OmNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3Rh
bnQoTm9kZSogbm9kZSwgaW50MzJfdCByYWRpeCkKIHsKICAgICBhdXRvIGNhbGxUb1N0cmluZyA9
IFsmXSAoYXV0byBvcGVyYXRpb24sIEdQUlJlZyByZXN1bHRHUFIsIGF1dG8gdmFsdWVSZWcpIHsK
ICAgICAgICAgZmx1c2hSZWdpc3RlcnMoKTsKLSAgICAgICAgY2FsbE9wZXJhdGlvbihvcGVyYXRp
b24sIHJlc3VsdEdQUiwgdmFsdWVSZWcsIENDYWxsSGVscGVyczo6VHJ1c3RlZEltbTMyKDEwKSk7
CisgICAgICAgIGNhbGxPcGVyYXRpb24ob3BlcmF0aW9uLCByZXN1bHRHUFIsIHZhbHVlUmVnLCBU
cnVzdGVkSW1tMzIocmFkaXgpKTsKICAgICAgICAgbV9qaXQuZXhjZXB0aW9uQ2hlY2soKTsKICAg
ICAgICAgY2VsbFJlc3VsdChyZXN1bHRHUFIsIG5vZGUpOwogICAgIH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklULmgKaW5kZXggZjM0ZmQ0NmMyODhkNGM3
MjJmMzYwZWNlYmE0MDRmNDkzZjhmNGRiNy4uMzI4Y2JiMTA4MWM3ZGQ1ZDJhZWM2OWE1NjVkZDdi
YzhhMWQwMjdhNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2RmZy9ERkdTcGVj
dWxhdGl2ZUpJVC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3BlY3VsYXRp
dmVKSVQuaApAQCAtMjc2Niw4ICsyNzY2LDkgQEAgY2xhc3MgU3BlY3VsYXRpdmVKSVQgewogICAg
IHZvaWQgZW1pdFN3aXRjaChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBjb21waWxlVG9TdHJpbmdP
ckNhbGxTdHJpbmdDb25zdHJ1Y3RvcihOb2RlKik7Ci0gICAgdm9pZCBjb21waWxlVG9TdHJpbmdP
ckNhbGxTdHJpbmdDb25zdHJ1Y3Rvck9uTnVtYmVyKE5vZGUqKTsKICAgICB2b2lkIGNvbXBpbGVO
dW1iZXJUb1N0cmluZ1dpdGhSYWRpeChOb2RlKik7CisgICAgdm9pZCBjb21waWxlTnVtYmVyVG9T
dHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50KE5vZGUqKTsKKyAgICB2b2lkIGNvbXBpbGVOdW1i
ZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQoTm9kZSosIGludDMyX3QgcmFkaXgpOwog
ICAgIHZvaWQgY29tcGlsZU5ld1N0cmluZ09iamVjdChOb2RlKik7CiAgICAgCiAgICAgdm9pZCBj
b21waWxlTmV3VHlwZWRBcnJheShOb2RlKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUMzJfNjQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDMyXzY0LmNwcAppbmRleCA4NDY1ZGUyNzBmOGIyZjQ1
NzE1NGIzODYyMTVlYjE5ZjQ1NWQ2N2NkLi44MDcxMGFlYTY4MWY3MDUxNmMwOGQ4OWM4MDhkZGQ5
MDhjYzAwY2U4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1
bGF0aXZlSklUMzJfNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQzMl82NC5jcHAKQEAgLTI4NDMsNiArMjg0MywxMSBAQCB2b2lkIFNwZWN1bGF0
aXZlSklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAg
IGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OiB7CisgICAgICAgIGNv
bXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQobm9kZSk7CisgICAgICAg
IGJyZWFrOworICAgIH0KKwogICAgIGNhc2UgR2V0QnlWYWxXaXRoVGhpczogewogICAgICAgICBK
U1ZhbHVlT3BlcmFuZCBiYXNlKHRoaXMsIG5vZGUtPmNoaWxkMSgpKTsKICAgICAgICAgSlNWYWx1
ZVJlZ3MgYmFzZVJlZ3MgPSBiYXNlLmpzVmFsdWVSZWdzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvZGZnL0RGR1NwZWN1bGF0aXZlSklUNjQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2RmZy9ERkdTcGVjdWxhdGl2ZUpJVDY0LmNwcAppbmRleCBjMmZkY2U5YjljYjA4
Y2I0Mzg4NzI3YzBmMDFlNWY2ZDcwZTFmM2Q4Li4zMDljNDdiOTVhNjA0ZDQ1ZTAxOTVjOTIwMDc5
MDIzZDIzMmE3OGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1Nw
ZWN1bGF0aXZlSklUNjQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcvREZHU3Bl
Y3VsYXRpdmVKSVQ2NC5jcHAKQEAgLTUzMDMsNiArNTMwMywxMSBAQCB2b2lkIFNwZWN1bGF0aXZl
SklUOjpjb21waWxlKE5vZGUqIG5vZGUpCiAgICAgICAgIGJyZWFrOwogICAgIH0KIAorICAgIGNh
c2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRpeENvbnN0YW50OiB7CisgICAgICAgIGNvbXBp
bGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3RhbnQobm9kZSk7CisgICAgICAgIGJy
ZWFrOworICAgIH0KKwogICAgIGNhc2UgSXNPYmplY3Q6IHsKICAgICAgICAgSlNWYWx1ZU9wZXJh
bmQgdmFsdWUodGhpcywgbm9kZS0+Y2hpbGQxKCkpOwogICAgICAgICBHUFJUZW1wb3JhcnkgcmVz
dWx0KHRoaXMsIFJldXNlLCB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvZGZnL0RGR1N0cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2RmZy9ERkdTdHJlbmd0aFJlZHVjdGlvblBoYXNlLmNwcAppbmRleCA2NWFmYjRhZTg5NWFk
NDg3YmY1ZmFiZWNkZmViNTk3OGVjZWMwMDRkLi42MDA5MmI2NGVkYzJjMmY5NDg5ZTgzN2JmYzU0
NzA4OTA4ZDM0YWM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZGZnL0RGR1N0
cmVuZ3RoUmVkdWN0aW9uUGhhc2UuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9kZmcv
REZHU3RyZW5ndGhSZWR1Y3Rpb25QaGFzZS5jcHAKQEAgLTQyNiw2ICs0MjYsMTkgQEAgY2xhc3Mg
U3RyZW5ndGhSZWR1Y3Rpb25QaGFzZSA6IHB1YmxpYyBQaGFzZSB7CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogCisgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50OiB7CisgICAgICAgICAgICBFZGdlJiBjaGlsZDEgPSBtX25vZGUtPmNoaWxkMSgp
OworICAgICAgICAgICAgaWYgKGNoaWxkMS0+aGFzQ29uc3RhbnQoKSkgeworICAgICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBjaGlsZDEtPmNvbnN0YW50KCktPnZhbHVlKCk7CisgICAgICAg
ICAgICAgICAgaWYgKHZhbHVlICYmIHZhbHVlLmlzTnVtYmVyKCkpIHsKKyAgICAgICAgICAgICAg
ICAgICAgU3RyaW5nIHJlc3VsdCA9IHRvU3RyaW5nV2l0aFJhZGl4KHZhbHVlLmFzTnVtYmVyKCks
IG1fbm9kZS0+dmFsaWRSYWRpeENvbnN0YW50KCkpOworICAgICAgICAgICAgICAgICAgICBtX25v
ZGUtPmNvbnZlcnRUb0xhenlKU0NvbnN0YW50KG1fZ3JhcGgsIExhenlKU1ZhbHVlOjpuZXdTdHJp
bmcobV9ncmFwaCwgcmVzdWx0KSk7CisgICAgICAgICAgICAgICAgICAgIG1fY2hhbmdlZCA9IHRy
dWU7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7
CisgICAgICAgIH0KKwogICAgICAgICBjYXNlIEdldEFycmF5TGVuZ3RoOiB7CiAgICAgICAgICAg
ICBpZiAobV9ub2RlLT5hcnJheU1vZGUoKS50eXBlKCkgPT0gQXJyYXk6OkdlbmVyaWMKICAgICAg
ICAgICAgICAgICB8fCBtX25vZGUtPmFycmF5TW9kZSgpLnR5cGUoKSA9PSBBcnJheTo6U3RyaW5n
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGll
cy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTENhcGFiaWxpdGllcy5jcHAKaW5k
ZXggYzIxNWE2MzI5NjFmODZlMWJlNjI4YmIxZTljOTZiNjhjYmZlZjEzNS4uZDFmYTYzOTI4YzFj
MjRmYWFmMTJmNjZjN2RlYmYwMTU2OWJhYmM1YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2Z0bC9GVExDYXBhYmlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9mdGwvRlRMQ2FwYWJpbGl0aWVzLmNwcApAQCAtMjg0LDYgKzI4NCw3IEBAIGlubGluZSBDYXBh
YmlsaXR5TGV2ZWwgY2FuQ29tcGlsZShOb2RlKiBub2RlKQogICAgIGNhc2UgRGVmaW5lQWNjZXNz
b3JQcm9wZXJ0eToKICAgICBjYXNlIFRvTG93ZXJDYXNlOgogICAgIGNhc2UgTnVtYmVyVG9TdHJp
bmdXaXRoUmFkaXg6CisgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4Q29uc3Rh
bnQ6CiAgICAgY2FzZSBDaGVja1N1YkNsYXNzOgogICAgIGNhc2UgQ2FsbERPTToKICAgICBjYXNl
IENhbGxET01HZXR0ZXI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TExvd2VyREZHVG9CMy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZUTExvd2VyREZH
VG9CMy5jcHAKaW5kZXggZTdiMjQ2MmFiMGEzOTkxMzVjNWJjMzExZmU3ZWJhNzFmN2JmNDdmNi4u
MTJjMDQzZTZlMDNiYzE4ZTFjODFkMmNlZWI5MmQ3OThiNzRkYzBjMCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2Z0bC9GVExMb3dlckRGR1RvQjMuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9mdGwvRlRMTG93ZXJERkdUb0IzLmNwcApAQCAtMTEyMyw2ICsxMTIzLDkg
QEAgY2xhc3MgTG93ZXJERkdUb0IzIHsKICAgICAgICAgY2FzZSBOdW1iZXJUb1N0cmluZ1dpdGhS
YWRpeDoKICAgICAgICAgICAgIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhSYWRpeCgpOwogICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgTnVtYmVyVG9TdHJpbmdXaXRoVmFsaWRSYWRp
eENvbnN0YW50OgorICAgICAgICAgICAgY29tcGlsZU51bWJlclRvU3RyaW5nV2l0aFZhbGlkUmFk
aXhDb25zdGFudCgpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ2hlY2tTdWJD
bGFzczoKICAgICAgICAgICAgIGNvbXBpbGVDaGVja1N1YkNsYXNzKCk7CiAgICAgICAgICAgICBi
cmVhazsKQEAgLTEwNDE5LDYgKzEwNDIyLDIzIEBAIGNsYXNzIExvd2VyREZHVG9CMyB7CiAgICAg
ICAgIH0KICAgICB9CiAKKyAgICB2b2lkIGNvbXBpbGVOdW1iZXJUb1N0cmluZ1dpdGhWYWxpZFJh
ZGl4Q29uc3RhbnQoKQorICAgIHsKKyAgICAgICAgc3dpdGNoIChtX25vZGUtPmNoaWxkMSgpLnVz
ZUtpbmQoKSkgeworICAgICAgICBjYXNlIEludDMyVXNlOgorICAgICAgICAgICAgc2V0SlNWYWx1
ZSh2bUNhbGwocG9pbnRlclR5cGUoKSwgbV9vdXQub3BlcmF0aW9uKG9wZXJhdGlvbkludDMyVG9T
dHJpbmdXaXRoVmFsaWRSYWRpeCksIG1fY2FsbEZyYW1lLCBsb3dJbnQzMihtX25vZGUtPmNoaWxk
MSgpKSwgbV9vdXQuY29uc3RJbnQzMihtX25vZGUtPnZhbGlkUmFkaXhDb25zdGFudCgpKSkpOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgSW50NTJSZXBVc2U6CisgICAgICAgICAg
ICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291dC5vcGVyYXRpb24ob3BlcmF0
aW9uSW50NTJUb1N0cmluZ1dpdGhWYWxpZFJhZGl4KSwgbV9jYWxsRnJhbWUsIGxvd1N0cmljdElu
dDUyKG1fbm9kZS0+Y2hpbGQxKCkpLCBtX291dC5jb25zdEludDMyKG1fbm9kZS0+dmFsaWRSYWRp
eENvbnN0YW50KCkpKSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBEb3VibGVS
ZXBVc2U6CisgICAgICAgICAgICBzZXRKU1ZhbHVlKHZtQ2FsbChwb2ludGVyVHlwZSgpLCBtX291
dC5vcGVyYXRpb24ob3BlcmF0aW9uRG91YmxlVG9TdHJpbmdXaXRoVmFsaWRSYWRpeCksIG1fY2Fs
bEZyYW1lLCBsb3dEb3VibGUobV9ub2RlLT5jaGlsZDEoKSksIG1fb3V0LmNvbnN0SW50MzIobV9u
b2RlLT52YWxpZFJhZGl4Q29uc3RhbnQoKSkpKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAg
ICBkZWZhdWx0OgorICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAg
ICAgICAgfQorICAgIH0KKwogICAgIHZvaWQgY29tcGlsZVJlc29sdmVTY29wZUZvckhvaXN0aW5n
RnVuY0RlY2xJbkV2YWwoKQogICAgIHsKICAgICAgICAgVW5pcXVlZFN0cmluZ0ltcGwqIHVpZCA9
IG1fZ3JhcGguaWRlbnRpZmllcnMoKVttX25vZGUtPmlkZW50aWZpZXJOdW1iZXIoKV07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXgg
ZjkxNmE0NmJhODVjMTU0MTEwM2FiMTYxMjRjNmQxYjc2NmYxN2NiNi4uMGMzYTc2NWVjMGVjNzg3
ZGU0YTMxYjNhZmE4MTQ1ODE3YmFjMGE0MCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMzI1LDYgKzMyNSw3IEBAIEpTR2xvYmFs
T2JqZWN0OjpKU0dsb2JhbE9iamVjdChWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBjb25z
dCBHbG9iYWxPYmplY3RNCiAgICAgLCBtX21hcFNldFdhdGNocG9pbnQoSXNXYXRjaGVkKQogICAg
ICwgbV9zZXRBZGRXYXRjaHBvaW50KElzV2F0Y2hlZCkKICAgICAsIG1fYXJyYXlTcGVjaWVzV2F0
Y2hwb2ludChDbGVhcldhdGNocG9pbnQpCisgICAgLCBtX251bWJlclRvU3RyaW5nV2F0Y2hwb2lu
dChJc1dhdGNoZWQpCiAgICAgLCBtX3RlbXBsYXRlUmVnaXN0cnkodm0pCiAgICAgLCBtX3J1bnRp
bWVGbGFncygpCiAgICAgLCBtX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlKGdsb2JhbE9iamVjdE1l
dGhvZFRhYmxlID8gZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgOiAmc19nbG9iYWxPYmplY3RNZXRo
b2RUYWJsZSkKQEAgLTEwMTUsNiArMTAxNiwxMyBAQCBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+IGpzTmFtZSwgbG93ZXJOYW1lICMjIENvbnN0cnVjdAog
ICAgICAgICAgICAgbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50ID0gc3RkOjptYWtlX3VuaXF1
ZTxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4odm0sIGNvbmRpdGlvbiwgbV9zZXRBZGRXYXRjaHBvaW50KTsKICAgICAgICAgICAgIG1f
c2V0UHJvdG90eXBlQWRkV2F0Y2hwb2ludC0+aW5zdGFsbCgpOwogICAgICAgICB9CisKKyAgICAg
ICAgeworICAgICAgICAgICAgT2JqZWN0UHJvcGVydHlDb25kaXRpb24gY29uZGl0aW9uID0gc2V0
dXBBZGFwdGl2ZVdhdGNocG9pbnQobnVtYmVyUHJvdG90eXBlKCksIG1fdm0ucHJvcGVydHlOYW1l
cy0+dG9TdHJpbmcpOworICAgICAgICAgICAgbV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNo
cG9pbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRj
aHBvaW50PElubGluZVdhdGNocG9pbnRTZXQ+Pih2bSwgY29uZGl0aW9uLCBtX251bWJlclRvU3Ry
aW5nV2F0Y2hwb2ludCk7CisgICAgICAgICAgICBtX251bWJlclByb3RvdHlwZVRvU3RyaW5nV2F0
Y2hwb2ludC0+aW5zdGFsbCgpOworICAgICAgICAgICAgbV9udW1iZXJQcm90b1RvU3RyaW5nRnVu
Y3Rpb24uc2V0KHZtLCB0aGlzLCBqc0Nhc3Q8SlNGdW5jdGlvbio+KG51bWJlclByb3RvdHlwZSgp
LT5nZXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPnRvU3RyaW5nKSkpOworICAgICAgICB9
CiAgICAgfQogCiAgICAgcmVzZXRQcm90b3R5cGUodm0sIGdldFByb3RvdHlwZURpcmVjdCgpKTsK
QEAgLTEyNjQsNiArMTI3Miw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW4o
SlNDZWxsKiBjZWxsLCBTbG90VmlzaXRvciYgdmlzaXRvcikKICAgICB0aGlzT2JqZWN0LT5tX2l0
ZXJhdG9yUHJvdG9jb2xGdW5jdGlvbi52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3Byb21pc2VSZXNvbHZlRnVuY3Rpb24udmlzaXQodmlzaXRvcik7CiAgICAgdmlzaXRvci5hcHBl
bmQodGhpc09iamVjdC0+bV9vYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbik7CisgICAgdmlzaXRv
ci5hcHBlbmQodGhpc09iamVjdC0+bV9udW1iZXJQcm90b1RvU3RyaW5nRnVuY3Rpb24pOwogICAg
IHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbmV3UHJvbWlzZUNhcGFiaWxpdHlGdW5jdGlv
bik7CiAgICAgdmlzaXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9mdW5jdGlvblByb3RvSGFzSW5z
dGFuY2VTeW1ib2xGdW5jdGlvbik7CiAgICAgdGhpc09iamVjdC0+bV90aHJvd1R5cGVFcnJvckdl
dHRlclNldHRlci52aXNpdCh2aXNpdG9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IDZjMjlkMWExYTg5NTAyODg0Mzk3NjIxZmYzYjc1
MzI2MDc0YjViMjQuLjFmYjBlOTY1YTM1ZWJmMmUxNDBlYTEwNDdhZDg1MjkwM2VkYzdhNjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MjY5LDYgKzI2OSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVk
VmFyaWFibGVPYmplY3QgewogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgSlNGdW5j
dGlvbj4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBKU0Z1bmN0aW9uPiBtX3Byb21pc2VSZXNvbHZlRnVuY3Rpb247CiAgICAgV3Jp
dGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fb2JqZWN0UHJvdG9WYWx1ZU9mRnVuY3Rpb247CisgICAg
V3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fbnVtYmVyUHJvdG9Ub1N0cmluZ0Z1bmN0aW9uOwog
ICAgIFdyaXRlQmFycmllcjxKU0Z1bmN0aW9uPiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rp
b247CiAgICAgV3JpdGVCYXJyaWVyPEpTRnVuY3Rpb24+IG1fZnVuY3Rpb25Qcm90b0hhc0luc3Rh
bmNlU3ltYm9sRnVuY3Rpb247CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBHZXR0
ZXJTZXR0ZXI+IG1fdGhyb3dUeXBlRXJyb3JHZXR0ZXJTZXR0ZXI7CkBAIC00MTMsNiArNDE0LDcg
QEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVj
dCB7CiAgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbWFwU2V0V2F0Y2hwb2ludCgpIHsgcmV0dXJu
IG1fbWFwU2V0V2F0Y2hwb2ludDsgfQogICAgIElubGluZVdhdGNocG9pbnRTZXQmIHNldEFkZFdh
dGNocG9pbnQoKSB7IHJldHVybiBtX3NldEFkZFdhdGNocG9pbnQ7IH0KICAgICBJbmxpbmVXYXRj
aHBvaW50U2V0JiBhcnJheVNwZWNpZXNXYXRjaHBvaW50KCkgeyByZXR1cm4gbV9hcnJheVNwZWNp
ZXNXYXRjaHBvaW50OyB9CisgICAgSW5saW5lV2F0Y2hwb2ludFNldCYgbnVtYmVyVG9TdHJpbmdX
YXRjaHBvaW50KCkgeyByZXR1cm4gbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQ7IH0KICAgICAv
LyBJZiB0aGlzIGhhc24ndCBiZWVuIGludmFsaWRhdGVkLCBpdCBtZWFucyB0aGUgYXJyYXkgaXRl
cmF0b3IgcHJvdG9jb2wKICAgICAvLyBpcyBub3Qgb2JzZXJ2YWJsZSB0byB1c2VyIGNvZGUgeWV0
LgogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheUl0ZXJhdG9yUHJvdG9jb2xXYXRjaHBv
aW50OwpAQCAtNDIyLDYgKzQyNCw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpT
U2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9tYXBT
ZXRXYXRjaHBvaW50OwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9zZXRBZGRXYXRjaHBvaW50
OwogICAgIElubGluZVdhdGNocG9pbnRTZXQgbV9hcnJheVNwZWNpZXNXYXRjaHBvaW50OworICAg
IElubGluZVdhdGNocG9pbnRTZXQgbV9udW1iZXJUb1N0cmluZ1dhdGNocG9pbnQ7CiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPE9iamVjdFByb3BlcnR5Q2hhbmdlQWRhcHRpdmVXYXRjaHBvaW50PElubGlu
ZVdhdGNocG9pbnRTZXQ+PiBtX2FycmF5UHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRjaHBvaW50
OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hw
b2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9hcnJheUl0ZXJhdG9yUHJvdG90eXBlTmV4dDsK
ICAgICBzdGQ6OnVuaXF1ZV9wdHI8T2JqZWN0UHJvcGVydHlDaGFuZ2VBZGFwdGl2ZVdhdGNocG9p
bnQ8SW5saW5lV2F0Y2hwb2ludFNldD4+IG1fbWFwUHJvdG90eXBlU3ltYm9sSXRlcmF0b3JXYXRj
aHBvaW50OwpAQCAtNDMyLDYgKzQzNSw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmplY3RQ
cm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4gbV9z
dHJpbmdJdGVyYXRvclByb3RvdHlwZU5leHRXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0
cjxPYmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50
U2V0Pj4gbV9tYXBQcm90b3R5cGVTZXRXYXRjaHBvaW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxP
YmplY3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0
Pj4gbV9zZXRQcm90b3R5cGVBZGRXYXRjaHBvaW50OworICAgIHN0ZDo6dW5pcXVlX3B0cjxPYmpl
Y3RQcm9wZXJ0eUNoYW5nZUFkYXB0aXZlV2F0Y2hwb2ludDxJbmxpbmVXYXRjaHBvaW50U2V0Pj4g
bV9udW1iZXJQcm90b3R5cGVUb1N0cmluZ1dhdGNocG9pbnQ7CiAKICAgICBib29sIGlzQXJyYXlQ
cm90b3R5cGVJdGVyYXRvclByb3RvY29sRmFzdEFuZE5vbk9ic2VydmFibGUoKTsKICAgICBib29s
IGlzTWFwUHJvdG90eXBlSXRlcmF0b3JQcm90b2NvbEZhc3RBbmROb25PYnNlcnZhYmxlKCk7CkBA
IC01NDIsNiArNTQ2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAgICAgSlNGdW5jdGlvbiogaXRlcmF0b3JQcm90b2NvbEZ1bmN0
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9pdGVyYXRvclByb3RvY29sRnVuY3Rpb24uZ2V0KHRoaXMp
OyB9CiAgICAgSlNGdW5jdGlvbiogcHJvbWlzZVJlc29sdmVGdW5jdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fcHJvbWlzZVJlc29sdmVGdW5jdGlvbi5nZXQodGhpcyk7IH0KICAgICBKU0Z1bmN0aW9u
KiBvYmplY3RQcm90b1ZhbHVlT2ZGdW5jdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fb2JqZWN0UHJv
dG9WYWx1ZU9mRnVuY3Rpb24uZ2V0KCk7IH0KKyAgICBKU0Z1bmN0aW9uKiBudW1iZXJQcm90b1Rv
U3RyaW5nRnVuY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX251bWJlclByb3RvVG9TdHJpbmdGdW5j
dGlvbi5nZXQoKTsgfQogICAgIEpTRnVuY3Rpb24qIG5ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rp
b24oKSBjb25zdCB7IHJldHVybiBtX25ld1Byb21pc2VDYXBhYmlsaXR5RnVuY3Rpb24uZ2V0KCk7
IH0KICAgICBKU0Z1bmN0aW9uKiBmdW5jdGlvblByb3RvSGFzSW5zdGFuY2VTeW1ib2xGdW5jdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZnVuY3Rpb25Qcm90b0hhc0luc3RhbmNlU3ltYm9sRnVuY3Rp
b24uZ2V0KCk7IH0KICAgICBKU09iamVjdCogcmVnRXhwUHJvdG9FeGVjRnVuY3Rpb24oKSBjb25z
dCB7IHJldHVybiBtX3JlZ0V4cFByb3RvRXhlYy5nZXQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvTnVtYmVyUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5jcHAKaW5kZXggMGE3NDQxYmUxMjk0
NmRkNDM3ZmQ1MzJmZjBhMWVjOWFjM2UyYmIwNy4uZmRhOWNkMTY0MDYyODk5ODVmYTA4MDc1ZDA5
MWUwMDhjMmEwYjFmMSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
TnVtYmVyUHJvdG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9O
dW1iZXJQcm90b3R5cGUuY3BwCkBAIC01OCw3ICs1OCw2IEBAIGNvbnN0IENsYXNzSW5mbyBOdW1i
ZXJQcm90b3R5cGU6OnNfaW5mbyA9IHsgIk51bWJlciIsICZOdW1iZXJPYmplY3Q6OnNfaW5mbywg
Jm51CiAKIC8qIFNvdXJjZSBmb3IgTnVtYmVyUHJvdG90eXBlLmx1dC5oCiBAYmVnaW4gbnVtYmVy
UHJvdG90eXBlVGFibGUKLSAgdG9TdHJpbmcgICAgICAgICAgbnVtYmVyUHJvdG9GdW5jVG9TdHJp
bmcgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxIE51bWJlclByb3RvdHlwZVRvU3RyaW5nSW50
cmluc2ljCiAgIHRvTG9jYWxlU3RyaW5nICAgIG51bWJlclByb3RvRnVuY1RvTG9jYWxlU3RyaW5n
ICAgRG9udEVudW18RnVuY3Rpb24gMAogICB2YWx1ZU9mICAgICAgICAgICBudW1iZXJQcm90b0Z1
bmNWYWx1ZU9mICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKICAgdG9GaXhlZCAgICAgICAg
ICAgbnVtYmVyUHJvdG9GdW5jVG9GaXhlZCAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCkBA
IC03OSwxMCArNzgsOSBAQCB2b2lkIE51bWJlclByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24oVk0m
IHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogICAgIEJhc2U6OmZpbmlzaENyZWF0
aW9uKHZtKTsKICAgICBzZXRJbnRlcm5hbFZhbHVlKHZtLCBqc051bWJlcigwKSk7CiAKKyAgICBK
U0NfTkFUSVZFX0lOVFJJTlNJQ19GVU5DVElPTl9XSVRIT1VUX1RSQU5TSVRJT04odm0ucHJvcGVy
dHlOYW1lcy0+dG9TdHJpbmcsIG51bWJlclByb3RvRnVuY1RvU3RyaW5nLCBEb250RW51bSwgMSwg
TnVtYmVyUHJvdG90eXBlVG9TdHJpbmdJbnRyaW5zaWMpOwogI2lmIEVOQUJMRShJTlRMKQogICAg
IEpTQ19CVUlMVElOX0ZVTkNUSU9OX1dJVEhPVVRfVFJBTlNJVElPTigidG9Mb2NhbGVTdHJpbmci
LCBudW1iZXJQcm90b3R5cGVUb0xvY2FsZVN0cmluZ0NvZGVHZW5lcmF0b3IsIERvbnRFbnVtKTsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CiAjZW5kaWYgLy8gRU5BQkxF
KElOVEwpCiAKICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwpAQCAtMTY1LDcgKzE2
Myw3IEBAIHN0YXRpYyBpbmxpbmUgY2hhciogaW50NTJUb1N0cmluZ1dpdGhSYWRpeChjaGFyKiBz
dGFydE9mUmVzdWx0U3RyaW5nLCBpbnQ2NF90IGluCiAgICAgcmV0dXJuIHN0YXJ0T2ZSZXN1bHRT
dHJpbmc7CiB9CiAKLXN0YXRpYyBjaGFyKiB0b1N0cmluZ1dpdGhSYWRpeChSYWRpeEJ1ZmZlciYg
YnVmZmVyLCBkb3VibGUgb3JpZ2luYWxOdW1iZXIsIHVuc2lnbmVkIHJhZGl4KQorc3RhdGljIGNo
YXIqIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoUmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91Ymxl
IG9yaWdpbmFsTnVtYmVyLCB1bnNpZ25lZCByYWRpeCkKIHsKICAgICBBU1NFUlQoc3RkOjppc2Zp
bml0ZShvcmlnaW5hbE51bWJlcikpOwogICAgIEFTU0VSVChyYWRpeCA+PSAyICYmIHJhZGl4IDw9
IDM2KTsKQEAgLTM1OSw3ICszNTcsNyBAQCBzdGF0aWMgY2hhciogdG9TdHJpbmdXaXRoUmFkaXgo
UmFkaXhCdWZmZXImIGJ1ZmZlciwgZG91YmxlIG9yaWdpbmFsTnVtYmVyLCB1bnNpZwogICAgIHJl
dHVybiBzdGFydE9mUmVzdWx0U3RyaW5nOwogfQogCi1zdGF0aWMgU3RyaW5nIHRvU3RyaW5nV2l0
aFJhZGl4KGludDMyX3QgbnVtYmVyLCB1bnNpZ25lZCByYWRpeCkKK3N0YXRpYyBTdHJpbmcgdG9T
dHJpbmdXaXRoUmFkaXhJbnRlcm5hbChpbnQzMl90IG51bWJlciwgdW5zaWduZWQgcmFkaXgpCiB7
CiAgICAgTENoYXIgYnVmWzEgKyAzMl07IC8vIFdvcnN0IGNhc2UgaXMgcmFkaXggPT0gMiwgd2hp
Y2ggZ2l2ZXMgdXMgMzIgZGlnaXRzICsgc2lnbi4KICAgICBMQ2hhciogZW5kID0gc3RkOjplbmQo
YnVmKTsKQEAgLTM4NCw2ICszODIsMjEgQEAgc3RhdGljIFN0cmluZyB0b1N0cmluZ1dpdGhSYWRp
eChpbnQzMl90IG51bWJlciwgdW5zaWduZWQgcmFkaXgpCiAgICAgcmV0dXJuIFN0cmluZyhwLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oZW5kIC0gcCkpOwogfQogCitTdHJpbmcgdG9TdHJpbmdXaXRo
UmFkaXgoZG91YmxlIGRvdWJsZVZhbHVlLCBpbnQzMl90IHJhZGl4KQoreworICAgIEFTU0VSVCgh
KHJhZGl4IDwgMiB8fCByYWRpeCA+IDM2KSk7CisKKyAgICBpbnQzMl90IGludGVnZXJWYWx1ZSA9
IHN0YXRpY19jYXN0PGludDMyX3Q+KGRvdWJsZVZhbHVlKTsKKyAgICBpZiAoaW50ZWdlclZhbHVl
ID09IGRvdWJsZVZhbHVlKQorICAgICAgICByZXR1cm4gdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5h
bChpbnRlZ2VyVmFsdWUsIHJhZGl4KTsKKworICAgIGlmIChyYWRpeCA9PSAxMCB8fCAhc3RkOjpp
c2Zpbml0ZShkb3VibGVWYWx1ZSkpCisgICAgICAgIHJldHVybiBTdHJpbmc6Om51bWJlclRvU3Ry
aW5nRUNNQVNjcmlwdChkb3VibGVWYWx1ZSk7CisKKyAgICBSYWRpeEJ1ZmZlciBidWZmZXI7Cisg
ICAgcmV0dXJuIHRvU3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwoYnVmZmVyLCBkb3VibGVWYWx1ZSwg
cmFkaXgpOworfQorCiAvLyB0b0V4cG9uZW50aWFsIGNvbnZlcnRzIGEgbnVtYmVyIHRvIGEgc3Ry
aW5nLCBhbHdheXMgZm9ybWF0dGluZyBhcyBhbiBleHBvbmVudGlhbC4KIC8vIFRoaXMgbWV0aG9k
IHRha2VzIGFuIG9wdGlvbmFsIGFyZ3VtZW50IHNwZWNpZnlpbmcgYSBudW1iZXIgb2YgKmRlY2lt
YWwgcGxhY2VzKgogLy8gdG8gcm91bmQgdGhlIHNpZ25pZmljYW5kIHRvIChvciwgcHV0IGFub3Ro
ZXIgd2F5LCB0aGlzIG1ldGhvZCBvcHRpb25hbGx5IHJvdW5kcwpAQCAtNTIwLDcgKzUzMyw3IEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBpbnQzMlRvU3RyaW5nSW50ZXJuYWwoVk0m
IHZtLCBpbnQzMl90IHZhbHVlLCBpbnQzCiAgICAgaWYgKHJhZGl4ID09IDEwKQogICAgICAgICBy
ZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgdm0ubnVtZXJpY1N0cmluZ3MuYWRkKHZhbHVl
KSk7CiAKLSAgICByZXR1cm4ganNOb250cml2aWFsU3RyaW5nKCZ2bSwgdG9TdHJpbmdXaXRoUmFk
aXgodmFsdWUsIHJhZGl4KSk7CisgICAgcmV0dXJuIGpzTm9udHJpdmlhbFN0cmluZygmdm0sIHRv
U3RyaW5nV2l0aFJhZGl4SW50ZXJuYWwodmFsdWUsIHJhZGl4KSk7CiAKIH0KIApAQCAtNTM5LDcg
KzU1Miw3IEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIEpTU3RyaW5nKiBudW1iZXJUb1N0cmluZ0lu
dGVybmFsKFZNJiB2bSwgZG91YmxlIGRvdWJsZVZhbHVlCiAgICAgICAgIHJldHVybiBqc05vbnRy
aXZpYWxTdHJpbmcoJnZtLCBTdHJpbmc6Om51bWJlclRvU3RyaW5nRUNNQVNjcmlwdChkb3VibGVW
YWx1ZSkpOwogCiAgICAgUmFkaXhCdWZmZXIgYnVmZmVyOwotICAgIHJldHVybiBqc1N0cmluZygm
dm0sIHRvU3RyaW5nV2l0aFJhZGl4KGJ1ZmZlciwgZG91YmxlVmFsdWUsIHJhZGl4KSk7CisgICAg
cmV0dXJuIGpzU3RyaW5nKCZ2bSwgdG9TdHJpbmdXaXRoUmFkaXhJbnRlcm5hbChidWZmZXIsIGRv
dWJsZVZhbHVlLCByYWRpeCkpOwogfQogCiBKU1N0cmluZyogaW50MzJUb1N0cmluZyhWTSYgdm0s
IGludDMyX3QgdmFsdWUsIGludDMyX3QgcmFkaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9OdW1iZXJQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL051bWJlclByb3RvdHlwZS5oCmluZGV4IDNjMDY5Y2IwMWIxMjJlNjZhM2VlOTg2
NzQ0NTMxMTM1NTA2ZDMzMzMuLjAzOWIwZDU5ZDFlYzViZDM1YTVhYzJmYWY1MTEwMTdhYWFiNThh
ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3Rv
dHlwZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL051bWJlclByb3RvdHlw
ZS5oCkBAIC01NCw1ICs1NCw2IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgbnVtYmVy
UHJvdG9GdW5jVmFsdWVPZihFeGVjU3RhdGUqKTsKIEpTU3RyaW5nKiBpbnQzMlRvU3RyaW5nKFZN
JiwgaW50MzJfdCB2YWx1ZSwgaW50MzJfdCByYWRpeCk7CiBKU1N0cmluZyogaW50NTJUb1N0cmlu
ZyhWTSYsIGludDY0X3QgdmFsdWUsIGludDMyX3QgcmFkaXgpOwogSlNTdHJpbmcqIG51bWJlclRv
U3RyaW5nKFZNJiwgZG91YmxlIHZhbHVlLCBpbnQzMl90IHJhZGl4KTsKK1N0cmluZyB0b1N0cmlu
Z1dpdGhSYWRpeChkb3VibGUgZG91YmxlVmFsdWUsIGludDMyX3QgcmFkaXgpOwogCiB9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFu
Z2VMb2cKaW5kZXggMWJhNTg2YTY1MTI5YjdjNDY2OGQyY2ZhMDI3OWM2YzAxNGY5ZDM3ZS4uODU5
ODVlNDkxODk2MTJlY2M3YjFmYTI2OTNjMWQ3NDRhZTlmNDcxZiAxMDA2NDQKLS0tIGEvSlNUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzNyBAQAorMjAx
Ny0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KKworICAgICAg
ICBbREZHXVtGVExdIEVmZmljaWVudGx5IGV4ZWN1dGUgbnVtYmVyI3RvU3RyaW5nKCkKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MDAwNworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogbWljcm9iZW5jaG1h
cmtzL251bWJlci10by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9uLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHRlc3QpOgorICAgICAgICAqIG1pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdp
dGgtcmFkaXgtMTAuanM6IEFkZGVkLgorICAgICAgICAodGVzdCk6CisgICAgICAgICogbWljcm9i
ZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanM6IEFkZGVkLgorICAg
ICAgICAodGVzdCk6CisgICAgICAgICogbWljcm9iZW5jaG1hcmtzL251bWJlci10by1zdHJpbmct
d2l0aC1yYWRpeC5qczogQWRkZWQuCisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3Mv
bnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rpb24uanM6IEFkZGVkLgorICAgICAgICAo
c2hvdWxkQmUpOgorICAgICAgICAodGVzdCk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1z
dHJpbmctd2l0aC1yYWRpeC0xMC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAg
ICAgICh0ZXN0KToKKyAgICAgICAgKiBzdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LWNzZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKyAg
ICAgICAgKiBzdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LWludmFsaWQuanM6IEFk
ZGVkLgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVzcy9udW1iZXItdG8t
c3RyaW5nLXdpdGgtcmFkaXgtd2F0Y2hwb2ludC5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgKGkuaS4xZTMuTnVtYmVyLnByb3RvdHlwZS50
b1N0cmluZyk6CisgICAgICAgICogc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgICh0ZXN0KToKKwogMjAxNy0w
OS0wMiAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBb
REZHXSBSZWxheCBhcml0eSByZXF1aXJlbWVudApkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2Jl
bmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy1zdHJlbmd0aC1yZWR1Y3Rpb24uanMgYi9KU1Rlc3Rz
L21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4yZTcwMDk1OTkyMWJhMWI3OTEzZTkwZDU2MzhkY2RmYTE5YWFmNWY2Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy1z
dHJlbmd0aC1yZWR1Y3Rpb24uanMKQEAgLTAsMCArMSw5IEBACitmdW5jdGlvbiB0ZXN0KCkKK3sK
KyAgICB2YXIgdGFyZ2V0ID0gNDI7CisgICAgcmV0dXJuIHRhcmdldC50b1N0cmluZygxNik7Cit9
Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTY7ICsraSkKKyAgICB0
ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3Ry
aW5nLXdpdGgtcmFkaXgtMTAuanMgYi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8t
c3RyaW5nLXdpdGgtcmFkaXgtMTAuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWMwODNjYjRiNmZiYWJlNjdmZGY1
YzEzMmQwZTVkNDkwYzVmODFjNAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9iZW5j
aG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMC5qcwpAQCAtMCwwICsxLDEwIEBA
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisg
ICAgICAgIHZhciByZXN1bHQgPSBpLnRvU3RyaW5nKDEwKTsKKyAgICByZXR1cm4gcmVzdWx0Owor
fQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAg
dGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNyb2JlbmNobWFya3MvbnVtYmVyLXRvLXN0
cmluZy13aXRoLXJhZGl4LWNzZS5qcyBiL0pTVGVzdHMvbWljcm9iZW5jaG1hcmtzL251bWJlci10
by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjZiYzE1MmVhODcwOTMzZDcw
ZTMwOGZjNTNkNDFhZDZmMmZjODZhMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbWljcm9i
ZW5jaG1hcmtzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKQEAgLTAsMCArMSwx
NCBAQAorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsr
aSkgeworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7Cisg
ICAgICAgIGkudG9TdHJpbmcoMTYpOworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAg
aS50b1N0cmluZygxNik7CisgICAgfQorfQorbm9JbmxpbmUodGVzdCk7CisKK2ZvciAodmFyIGkg
PSAwOyBpIDwgMWUzOyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzIGIvSlNUZXN0cy9taWNy
b2JlbmNobWFya3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjAy
MTMwMjBiODVlYjE3MWY1NzAwZjBkMWRhZmEzN2ZiNDA2MzZjYWMKLS0tIC9kZXYvbnVsbAorKysg
Yi9KU1Rlc3RzL21pY3JvYmVuY2htYXJrcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXguanMK
QEAgLTAsMCArMSwxNiBAQAorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCAxMDsgKytpKSB7CisgICAgICAgIHZhciByZXN1bHQgPSAnJzsKKyAgICAgICAgcmVzdWx0
ICs9IGkudG9TdHJpbmcoMik7CisgICAgICAgIHJlc3VsdCArPSBpLnRvU3RyaW5nKDQpOworICAg
ICAgICByZXN1bHQgKz0gaS50b1N0cmluZyg4KTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJp
bmcoMTYpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygzMik7CisgICAgfQorICAgIHJl
dHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAx
ZTQ7ICsraSkKKyAgICB0ZXN0KCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9udW1iZXIt
dG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10
by1zdHJpbmctc3RyZW5ndGgtcmVkdWN0aW9uLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZmMDk5M2YzMWNhM2Nl
Mzc1OTcxNjZkMTkwYzg0MWUzMzc5ZGVjOWMKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0
cmVzcy9udW1iZXItdG8tc3RyaW5nLXN0cmVuZ3RoLXJlZHVjdGlvbi5qcwpAQCAtMCwwICsxLDE0
IEBACitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVh
bCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcignYmFkIHZhbHVlOiAnICsg
YWN0dWFsKTsKK30KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgdmFyIHRhcmdldCA9IDQyOwor
ICAgIHJldHVybiB0YXJnZXQudG9TdHJpbmcoMTYpOworfQorbm9JbmxpbmUodGVzdCk7CisKK2Zv
ciAodmFyIGkgPSAwOyBpIDwgMWU2OyArK2kpCisgICAgc2hvdWxkQmUodGVzdCgpLCBgMmFgKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0x
MC5qcyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC0xMC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5iZjhmNmEwZDBkNWVmOThjOTNiMjRmY2U2MmVhODc0NWJiNzdmMDBkCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LTEwLmpzCkBAIC0wLDAgKzEsMTUgQEAKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0
ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQorbm9JbmxpbmUoc2hvdWxkQmUpOworCitm
dW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpCisgICAg
ICAgIHNob3VsZEJlKGkudG9TdHJpbmcoMTApLCAiIiArIGkpOworfQorbm9JbmxpbmUodGVzdCk7
CisKK2ZvciAodmFyIGkgPSAwOyBpIDwgMWU0OyArK2kpCisgICAgdGVzdCgpOwpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LWNzZS5qcyBiL0pT
VGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uZGI3ODIxNmQ1OGRmNmE5NTM4MDQwZjFmNzQyYmZlMGJkN2M3MzVkMQotLS0gL2Rldi9udWxs
CisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC1jc2UuanMK
QEAgLTAsMCArMSwyMSBAQAorZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgewor
ICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ2Jh
ZCB2YWx1ZTogJyArIGFjdHVhbCk7Cit9CisKK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIHZhciBy
ZXN1bHQ7CisgICAgZm9yICh2YXIgaSA9IDA7IGkgPCAxZTI7ICsraSkgeworICAgICAgICBpLnRv
U3RyaW5nKDE2KTsKKyAgICAgICAgaS50b1N0cmluZygxNik7CisgICAgICAgIGkudG9TdHJpbmco
MTYpOworICAgICAgICBpLnRvU3RyaW5nKDE2KTsKKyAgICAgICAgcmVzdWx0ID0gaS50b1N0cmlu
ZygxNik7CisgICAgfQorICAgIHJldHVybiByZXN1bHQ7Cit9Citub0lubGluZSh0ZXN0KTsKKwor
Zm9yICh2YXIgaSA9IDA7IGkgPCAxZTM7ICsraSkKKyAgICBzaG91bGRCZSh0ZXN0KCksIGA2M2Ap
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LWludmFsaWQuanMgYi9KU1Rlc3RzL3N0cmVzcy9udW1iZXItdG8tc3RyaW5nLXdpdGgtcmFkaXgt
aW52YWxpZC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wNjkwOTY1MTRmMDUyZTQ3NGFjNDE3OTFhNzNmZGZlNTA2
NDFlNmIyCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmlu
Zy13aXRoLXJhZGl4LWludmFsaWQuanMKQEAgLTAsMCArMSwyNCBAQAorZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JNZXNzYWdlKSB7CisgICAgdmFyIGVycm9yVGhyb3duID0gZmFsc2U7
CisgICAgdmFyIGVycm9yID0gbnVsbDsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAg
fSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvclRocm93biA9IHRydWU7CisgICAgICAgIGVycm9y
ID0gZTsKKyAgICB9CisgICAgaWYgKCFlcnJvclRocm93bikKKyAgICAgICAgdGhyb3cgbmV3IEVy
cm9yKCdub3QgdGhyb3duJyk7CisgICAgaWYgKFN0cmluZyhlcnJvcikgIT09IGVycm9yTWVzc2Fn
ZSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBiYWQgZXJyb3I6ICR7U3RyaW5nKGVycm9yKX1g
KTsKK30KKworZnVuY3Rpb24gdGVzdChpLCByYWRpeCkKK3sKKyAgICByZXR1cm4gaS50b1N0cmlu
ZyhyYWRpeCk7Cit9Citub0lubGluZSh0ZXN0KTsKKworZm9yICh2YXIgaSA9IDA7IGkgPCAxZTQ7
ICsraSkgeworICAgIHNob3VsZFRocm93KCgpID0+IHRlc3QoaSwgNDIpLCBgUmFuZ2VFcnJvcjog
dG9TdHJpbmcoKSByYWRpeCBhcmd1bWVudCBtdXN0IGJlIGJldHdlZW4gMiBhbmQgMzZgKTsKK30K
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC13
YXRjaHBvaW50LmpzIGIvSlNUZXN0cy9zdHJlc3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4
LXdhdGNocG9pbnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNzk2OGY1OGExYThiYTQ3Y2RkMTUwZTU3N2NhMDNl
MTg3YjU3OTgwMQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL251bWJlci10by1z
dHJpbmctd2l0aC1yYWRpeC13YXRjaHBvaW50LmpzCkBAIC0wLDAgKzEsMjcgQEAKK2Z1bmN0aW9u
IHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3Rl
ZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOworfQor
CitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kpIHsK
KyAgICAgICAgdmFyIHJlc3VsdCA9ICcnOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygy
KTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoNCk7CisgICAgICAgIHJlc3VsdCArPSBp
LnRvU3RyaW5nKDgpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygxNik7CisgICAgICAg
IHJlc3VsdCArPSBpLnRvU3RyaW5nKDMyKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30K
K25vSW5saW5lKHRlc3QpOworCit2YXIgcmVzdWx0ID0gYDEwMDEyMTExOTlgOworZm9yICh2YXIg
aSA9IDA7IGkgPCAxZTQ7ICsraSkgeworICAgIGlmIChpID09PSAxZTMpIHsKKyAgICAgICAgTnVt
YmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIChyYWRpeCkgeyByZXR1cm4gIkhlbGxv
IjsgfQorICAgICAgICByZXN1bHQgPSBgSGVsbG9IZWxsb0hlbGxvSGVsbG9IZWxsb2A7CisgICAg
fQorICAgIHNob3VsZEJlKHRlc3QoKSwgcmVzdWx0KTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL251bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcyBiL0pTVGVzdHMvc3RyZXNzL251
bWJlci10by1zdHJpbmctd2l0aC1yYWRpeC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lNTFhOTc2MDAwODUwYTg4
YzZmMDg0ODk0YTI0OGQ4YTM0MzJmOWFlCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJl
c3MvbnVtYmVyLXRvLXN0cmluZy13aXRoLXJhZGl4LmpzCkBAIC0wLDAgKzEsMjEgQEAKK2Z1bmN0
aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBl
Y3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdiYWQgdmFsdWU6ICcgKyBhY3R1YWwpOwor
fQorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IDEwOyArK2kp
IHsKKyAgICAgICAgdmFyIHJlc3VsdCA9ICcnOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmlu
ZygyKTsKKyAgICAgICAgcmVzdWx0ICs9IGkudG9TdHJpbmcoNCk7CisgICAgICAgIHJlc3VsdCAr
PSBpLnRvU3RyaW5nKDgpOworICAgICAgICByZXN1bHQgKz0gaS50b1N0cmluZygxNik7CisgICAg
ICAgIHJlc3VsdCArPSBpLnRvU3RyaW5nKDMyKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KK25vSW5saW5lKHRlc3QpOworCitmb3IgKHZhciBpID0gMDsgaSA8IDFlNDsgKytpKQorICAg
IHNob3VsZEJlKHRlc3QoKSwgYDEwMDEyMTExOTlgKTsK
</data>
<flag name="review"
          id="339977"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>